多次元配列の場合でも配列初期化子を使って初期化することができます。 配列初期化子を使って初期化する場合は、1つの次元を数列とみなして1次元配列と同様の記述で表現し、それらを入れ子にすることで複数の次元を表現します。
次の例では、1次元目の長さが3、2次元目の長さが4の計3×4個の要素を持つ2次元配列を作成すると同時に初期化を行っています。
このコードで作成・初期化される2次元配列を図式化すると次のようになります。
matrix[m, n] | [m, 0] | [m, 1] | [m, 2] | [m, 3] |
---|---|---|---|---|
[0, n] | 0 | 1 | 2 | 3 |
[1, n] | 4 | 5 | 6 | 7 |
[2, n] | 8 | 9 | 10 | 11 |
3次元以上の多次元配列も同様にして初期化することができます。 2次元目は入れ子の2段目、3次元目は入れ子の3段目と、より高い次元の数列を入れ子の内側に記述します。 次元が高くなる分、記述も複雑になるので注意してください。
配列初期化子を使って4次元配列を初期化する
Imports System
Class Sample
Shared Sub Main()
' 2×2×2×2個の要素を持つ4次元配列
Dim tesseract As Integer(,,,) = { _
{ { {0, 1}, { 2, 3} }, { { 4, 5}, { 6, 7} } }, _
{ { {8, 9}, {10, 11} }, { {12, 13}, {14, 15} } } _
}
Console.WriteLine("tesseract(0, 0, 0, 0) = {0}", tesseract(0, 0, 0, 0))
Console.WriteLine("tesseract(0, 0, 0, 1) = {0}", tesseract(0, 0, 0, 1))
Console.WriteLine("tesseract(0, 0, 1, 0) = {0}", tesseract(0, 0, 1, 0))
Console.WriteLine("tesseract(0, 1, 0, 0) = {0}", tesseract(0, 1, 0, 0))
Console.WriteLine("tesseract(1, 0, 0, 0) = {0}", tesseract(1, 0, 0, 0))
Console.WriteLine("tesseract(1, 1, 1, 1) = {0}", tesseract(1, 1, 1, 1))
End Sub
End Class
実行結果
tesseract[0, 0, 0, 0] = 0 tesseract[0, 0, 0, 1] = 1 tesseract[0, 0, 1, 0] = 2 tesseract[0, 1, 0, 0] = 4 tesseract[1, 0, 0, 0] = 8 tesseract[1, 1, 1, 1] = 15