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

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段目][…]と段数分だけ括弧を連ねて記述します。

3段ジャグ配列の作成・3段ジャグ配列要素の参照
using System;

class Sample {
  static void Main()
  {
    // 1段目の長さが3である3段のジャグ配列を作成
    int[][][] doubleNested = new int[3][][];

    // 1段目に2段目となる配列を代入
    doubleNested[2] = new int[2][]; // 1段目の2番目に長さが2で2段のジャグ配列を代入

    // 2段目に3段目となる配列を代入
    doubleNested[2][0] = new int[4]; // 1段目の0番目、2段目の0番目に長さが4の配列を代入

    // 3段目の要素に値を代入
    doubleNested[2][0][3] = 5;
  }
}

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

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