我有一个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}}};
编译器会报错
"需要嵌套数组初始化器"。
那么为什么会发生这种情况,正确的初始化方式是什么?
您正在尝试创建锯齿数组。你的数组有n
行,所以你的第一个正方形应该是[]而不是[,]。每一行的元素(n
的索引)是二维数组,所以你需要使用[,]
。最后,您可以通过将[,][]
更改为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}}
};
一个2d数组的数组就是一个3d数组:
int[, ,] array3D = new int[,,] { { { 1, 2, 3 } }, { { 4, 5, 6 } } };
也可在MSDN查看更多信息http://msdn.microsoft.com/en-us/library/2yd9wwz4 (v =应用程序). aspx