VB.NETの配列の次元について
投稿者 よねKEN  (社会人)
投稿日時
2011/6/7 12:47:59
上限は32次元です。
http://msdn.microsoft.com/ja-jp/library/ayx7fta3(v=vs.80).aspx
上記の情報に辿りつくために、
以下のようなプログラムを書いてコンパイルしました。
http://msdn.microsoft.com/ja-jp/library/ayx7fta3(v=vs.80).aspx
上記の情報に辿りつくために、
以下のようなプログラムを書いてコンパイルしました。
Module A
Sub Main()
Dim a(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) As Integer
End Sub
End Module
投稿者 もちだ  (社会人)
投稿日時
2011/6/7 12:48:52
ヘルプを読んでみました。
「配列では最高 32 次元まで保持することが可能ですが、3 次元より多くなることは稀です。」
だそうで。
「配列では最高 32 次元まで保持することが可能ですが、3 次元より多くなることは稀です。」
だそうで。
投稿者 よねKEN  (社会人)
投稿日時
2011/6/7 12:54:29
先の投稿は多次元配列について書きました。
ジャグ配列は配列の中に配列が入っているだけなので、
おそらくメモリの許す限りいくらでもいけるのでは?と睨んでいます。
MSDNの文書でその辺の事情について書かれたものは見つけていません。
とりあえず以下はコンパイルは通りました。
ジャグ配列は配列の中に配列が入っているだけなので、
おそらくメモリの許す限りいくらでもいけるのでは?と睨んでいます。
MSDNの文書でその辺の事情について書かれたものは見つけていません。
とりあえず以下はコンパイルは通りました。
Module A
Sub Main()
'Dim a(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) As Integer
Dim a()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()() As Integer
a = Nothing
End Sub
End Module
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2011/6/7 14:21:09
多次元配列の 32 という制限値は、VB.NET というよりも .NET 側の制限のようですね。
Repeat(0, 33) や Repeat(1, 33) の場合、TypeLoadException の例外が発生しました。
ジャグ配列については、下記のように循環させると、幾らでも階層が増えていきますね。
あまり深くたどると、VB コンパイラよりも先に、開発環境(Visual Studio)側が音を上げてしまいそう。
Dim x() As Integer = Enumerable.Repeat(0, 32).ToArray()
Dim c As Array = Array.CreateInstance(GetType(Integer), x)
Repeat(0, 32) や Repeat(1, 32) ならば生成できますが、Repeat(0, 33) や Repeat(1, 33) の場合、TypeLoadException の例外が発生しました。
ジャグ配列については、下記のように循環させると、幾らでも階層が増えていきますね。
あまり深くたどると、VB コンパイラよりも先に、開発環境(Visual Studio)側が音を上げてしまいそう。
Dim a(0) As Object
a(0) = a
Debug.WriteLine(a(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0))
VB.NETでの配列の次元は、何次元まで可能なのでしょうか。
教えていただければと思います。