13

我有一个二维数组。例如,它就像:

{{{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)是二维数组,因此您需要使用[,]. 最后,您可以通过将 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 } } };

另请参阅 MSDN http://msdn.microsoft.com/en-us/library/2yd9wwz4(v=VS.90).aspx

于 2011-10-15T02:56:40.370 回答