13

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}}};

コンパイラは文句を言うでしょう

「ネストされた配列初期化子が必要です」。

では、なぜこれが発生し、初期化の正しい方法は何ですか?

4

2 に答える 2

24

ジャグ配列を作成しようとしています。配列にはn行があるため、最初の正方形は[、]ではなく[]にする必要があります。各行の要素(のインデックスn)は2D配列であるため、を使用する必要があります[,][,][]最後に、intをに変更することで問題を修正できます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}}
};
于 2011-10-15T03:02:45.760 に答える
3

2D配列の配列は3D配列です。

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

詳細については、MSDNhttp://msdn.microsoft.com/en-us/library/2yd9wwz4(v=VS.90).aspxも参照して ください。

于 2011-10-15T02:56:40.370 に答える