多次元配列も1次元配列と同様for文・foreach文で列挙することができます。 ただ、foreach文で多次元配列を列挙する場合、行や列ごとといった部分配列が列挙されるのではなく、次元が平坦化された1次元の数列として列挙されます。 この際、多段配列内の各要素は、より高い次元にあるインデックスの小さい要素から順に列挙されます。 そのため、多次元配列から行や列ごとに要素を抽出したい場合は、foreach文ではなくfor文でインデックスを指定して列挙する必要があります。
for・foreachで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} } } _
}
' Forステートメントを使って列挙
For d1 As Integer = 0 To tesseract.GetLength(0) - 1
Console.Write("[ ")
For d2 As Integer = 0 To tesseract.GetLength(1) - 1
Console.Write("{ ")
For d3 As Integer = 0 To tesseract.GetLength(2) - 1
Console.Write("( ")
For d4 As Integer = 0 To tesseract.GetLength(3) - 1
Console.Write("{0}, ", tesseract(d1, d2, d3, d4))
Next
Console.Write("), ")
Next
Console.Write("}, ")
Next
Console.WriteLine("], ")
Next
Console.WriteLine()
' For Eachステートメントを使って列挙
For Each elem As Integer In tesseract
Console.Write("{0}, ", elem)
Next
Console.WriteLine()
End Sub
End Class
実行結果
[ { ( 0, 1, ), ( 2, 3, ), }, { ( 4, 5, ), ( 6, 7, ), }, ], [ { ( 8, 9, ), ( 10, 11, ), }, { ( 12, 13, ), ( 14, 15, ), }, ], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,