有没有办法像这样访问我的三维锯齿状数组:
jaggedArray[1,2,3];
到目前为止,我收到了以下代码段:
int[][] jaggedArray = new int[3][]
{
new int[] { 2, 3, 4, 5, 6, 7, 8 },
new int[] { -4, -3, -2, -1, 0, 1},
new int[] { 6, 7, 8, 9, 10 }
};
int[,,] dontWork = new int[,,] // expect 7 everywhere in the last dimension
{
{ { 2, 3, 4, 5, 6, 7, 8 } },
{ { -4, -3, -2, -1, 0, 1} },
{ { 6, 7, 8, 9, 10 } }
};
答案 0 :(得分:4)
至于第一个问题,你试图访问锯齿状数组第一个元素的第二个元素的第三个元素:
jaggedArray[1][2][3]
对于错误,3D数组需要在维度的每个元素中使用相同数量的元素。让我们说,为了简单起见,你有一个2D锯齿状数组,粗略地表示在内存中看起来像是:
First row -> 2, 3, 4, 5, 6, 7, 8
Second row -> -4, -3, -2, -1, 0, 1
Third row -> 6, 7, 8, 9, 10
您可以看到每一行都被视为一个不同的数组,因此可以在大小上有所不同。但是,多维数组没有此属性。需要完全填写:
Column : 0 1 2 3 4 5 6
------------------------------------
First row : 2, 3, 4, 5, 6, 7, 8
Second row: -4, -3, -2, -1, 0, 1
Third row : 6, 7, 8, 9, 10
你的桌子缺少一些细胞,这没有任何意义。每个维度需要使用相同数量的元素。
答案 1 :(得分:2)
你有正确声明2D锯齿状数组的语法,3D锯齿状数组是其扩展。例如:
int[][][] jagged3d = new int[][][]
{
new int[][] { new int[] { 111, 112 }, new int[] { 121, 122, 123 } },
new int[][] { new int[] { 211 } }
}
但要访问它,您需要不同的语法:
jagged3d[0][1][2]