ジャグ配列の場合でも配列初期化子を使って初期化することができます。 配列初期化子を使って初期化する場合、多次元配列の場合と同様の記述ができますが、1段目はnew
を省略して記述できるのに対し、2段目以降はnew
を省略して記述することはできないという点に注意が必要です。
次の例では、1段目の長さが3、2段目の長さが各々3, 2, 4の計9個の要素を持つ2段のジャグ配列を作成すると同時に初期化を行っています。
このコードで作成・初期化される2段のジャグ配列を図式化すると次のようになります。
jagged[0] → 012 |
jagged[1] → 34 |
jagged[2] → 5678 |
3段以上のジャグ配列も同様にして初期化することができます。 配列の中に配列を含めるよう入れ子に記述していくことで多段のジャグ配列を初期化できます。
配列初期化子を使って3段ジャグ配列を初期化する
using System;
class Sample {
static void Main()
{
// 3段のジャグ配列
int[][][] doubleNested = {
new int[][] {
new int[] {0, 1, 2},
new int[] {3, 4},
new int[] {5, 6, 7, 8},
},
new int[][] {
new int[] {9, 10},
new int[] {11, 12, 13, 14},
},
new int[][] {
new int[] {15, 16, 17},
new int[] {18},
new int[] {19, 20},
new int[] {21, 22},
},
};
Console.WriteLine("doubleNested[0][0][0] = {0}", doubleNested[0][0][0]);
Console.WriteLine("doubleNested[0][2][3] = {0}", doubleNested[0][2][3]);
Console.WriteLine("doubleNested[1][0][0] = {0}", doubleNested[1][0][0]);
Console.WriteLine("doubleNested[2][3][1] = {0}", doubleNested[2][3][1]);
}
}
実行結果
doubleNested[0][0][0] = 0 doubleNested[0][2][3] = 8 doubleNested[1][0][0] = 9 doubleNested[2][3][1] = 22