ジャグ配列も1次元配列と同様for文・foreach文で列挙することができます。 ただし、foreach文でジャグ配列を列挙する場合は、多次元配列のように配列内の全要素が一つずつ列挙されるのではなく、単にジャグ配列の1段目に格納されている配列が列挙されます。 そのため、ジャグ配列内のすべての要素を列挙したい場合は、for文・foreach文ともに各段それぞれでfor文・foreach文を入れ子にしていくことで列挙する必要があります。
for・foreachで3段ジャグ配列を列挙する
Imports System
Class Sample
Shared Sub Main()
' 3段のジャグ配列
Dim doubleNested()()() As Integer = { _
New Integer()() { _
New Integer() {0, 1, 2}, _
New Integer() {3, 4}, _
New Integer() {5, 6, 7, 8} _
}, _
New Integer()() { _
New Integer() {9, 10}, _
New Integer() {11, 12, 13, 14} _
}, _
New Integer()() { _
New Integer() {15, 16, 17}, _
New Integer() {18}, _
New Integer() {19, 20}, _
New Integer() {21, 22} _
} _
}
' Forステートメントを使って列挙
For n1 As Integer = 0 To doubleNested.Length - 1
Console.Write("{ ")
For n2 As Integer = 0 To doubleNested(n1).Length - 1
Console.Write("( ")
For n3 As Integer = 0 To doubleNested(n1)(n2).Length - 1
Console.Write("{0}, ", doubleNested(n1)(n2)(n3))
Next
Console.Write("), ")
Next
Console.WriteLine("}, ")
Next
Console.WriteLine()
' For Eachステートメントを使って列挙
For Each jagged As Integer()() In doubleNested
Console.Write("{ ")
For Each arr As Integer() In jagged
Console.Write("( ")
For Each elem As Integer In arr
Console.Write("{0}, ", elem)
Next
Console.Write("), ")
Next
Console.WriteLine("), ")
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, ), }, { ( 0, 1, 2, ), ( 3, 4, ), ( 5, 6, 7, 8, ), }, { ( 9, 10, ), ( 11, 12, 13, 14, ), }, { ( 15, 16, 17, ), ( 18, ), ( 19, 20, ), ( 21, 22, ), },