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