2段のジャグ配列を宣言・作成し、要素を参照する例について見てみます。 次の例では、1段目の長さが3、2段目の長さが各々3, 2, 4の計9個の要素を持つ2段のジャグ配列を作成しています。

2段ジャグ配列の作成・2段ジャグ配列要素の参照
Imports System

Class Sample
  Shared Sub Main()
    ' 1段目の長さが3である2段のジャグ配列を作成
    Dim jagged(2)() As Integer

    ' 作成したジャグ配列の1段目に、2段目となる配列を代入
    jagged(0) = New Integer(2) {} ' 1段目の0番目に長さが3の配列を代入
    jagged(1) = New Integer(1) {} ' 1段目の1番目に長さが2の配列を代入
    jagged(2) = New Integer(3) {} ' 1段目の2番目に長さが4の配列を代入

    ' 1段目のインデックスが0、2段目のインデックスが0の要素に値を設定
    jagged(0)(0) = 0

    ' 1段目のインデックスが2、2段目のインデックスが3の要素に値を設定
    jagged(2)(3) = 8
  End Sub
End Class

2段のジャグ配列を宣言する場合は、1段目の要素数(またはインデックスの最大値)と、要素数を空にした2段目を括弧を連ねて記述します。 2段目に要素数を指定することはできません。 このように宣言されたジャグ配列では、2段目の配列はまだ作成されておらずヌル参照(null/Nothing)となっています。 そこからさらに2段目となる配列を1段目に代入していくことで、2段のジャグ配列を構成することができます。

2段のジャグ配列内の各要素を参照する場合は、1段目と2段目のインデックスを括弧を連ねて記述します。 上記のコードで作成される2段のジャグ配列を図式化すると次のようになります。 1段目を縦方向、2段目を横方向で表しています。

1段目の長さが3の2段のジャグ配列のイメージ
jagged[0] → jagged[0][0]jagged[0][1]jagged[0][2]
jagged[1] → jagged[1][0]jagged[1][1]
jagged[2] → jagged[2][0]jagged[2][1]jagged[2][2]jagged[2][3]

初期値を与えてジャグ配列を初期化する方法、ジャグ配列における配列初期化子については§.初期化 (配列初期化子)で解説します。

3段以上のジャグ配列を宣言・作成する場合も同様に、まず1段目の要素数のみを指定し、段数分だけ括弧を連ねて記述します。 そこから2段目となる配列の代入、さらにそこへ3段目となる配列を代入…と繰り替えしていきます。 要素を参照する場合も同様に、[1段目][2段目][3段目][…]と段数分だけ括弧を連ねて記述します。

ジャグ配列は配列の配列であることから、宣言等の記述を次のように読み替えることもできます。

ジャグ配列の記述の読み替え
配列 記述 読み替え
2段のジャグ配列 int[][] int 型の 配列 [] の配列 []
もしくは
「1段のジャグ配列 int[] に 配列 [] を含めるようにしたもの」
3段のジャグ配列 int[][][] int 型の 配列 [] の配列 [] の配列 []
もしくは
「2段のジャグ配列 int[][] に 配列 [] を含めるようにしたもの」
4段のジャグ配列 int[][][][] int 型の 配列 [] の配列 [] の配列 [] の配列 []
もしくは
「3段のジャグ配列 int[][][] に 配列 [] を含めるようにしたもの」

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。