10

私は2D配列の配列を持っています。 ";期待"2D配列の配列を初期化する方法は?

{{{0, 0, 1}, {1, 0, 0}} 
{{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
{{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}} 

しかし、私は

int [,][] arrays={{{0, 0, 1}, {1, 0, 0}} 
        {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
        {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}}; 

を記述する場合、コンパイラは文句を言うだろう:例えば、それは次のようです。

私は

int [,][] arrays={new int[,] {{0, 0, 1}, {1, 0, 0}} 
        new int[,] {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
        new int[,] {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}}; 

を記述する場合、コンパイラは、 "ネストされた配列初期化子が期待されている"

を文句を言うでしょう。

なぜこれが起こり、正しい初期化方法ですか?

答えて

20

でより多くを参照してください。あなたの配列はnの行を持ちますので、最初の四角は[]ではありません[、]。各行の要素(インデックスはn)は2D配列なので、[,]を使用する必要があります。最後に、[,][]からint[][,]に変更して問題を解決できます。

int[][,] arrays = { 
    new int[,] {{0, 0, 1}, {1, 0, 0}}, 
    new int[,] {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}}, 
    new int[,] {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}} 
}; 
+0

最初に 'new int [、] []'を追加しましたが、エラーはまだそこにあります。 – ziyuang

+0

ああ、私はあなたの問題を参照して、私はあなたの例から訂正コードを追加しました。 – Ekk

+0

これは動作します〜私は 'int [、]'は型だと思っていますので、この型の配列は 'int [、] []'になります。それはなぜそうですか? – ziyuang

2

2D配列の配列は、3D配列である:

int[, ,] array3D = new int[,,] { { { 1, 2, 3 } }, { { 4, 5, 6 } } }; 

はまた、あなたがジャグ配列を作成しようとしているMSDN http://msdn.microsoft.com/en-us/library/2yd9wwz4(v=VS.90).aspx

+1

しかし、それは彼がアスカーがインデックスに希望のに対し、3D配列はまた、整数で、その結果、すべての3つの指標が提供されている必要があります – Dani

+0

を固定し、取り戻すない望んでいる彼の質問から明らかである固定された最も外側のインデックスを、作ります2次元配列。 – dapi