0

有没有办法像这样访问我的三维锯齿状数组:

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

2 回答 2

3

至于第一个问题,您正在尝试访问锯齿状数组的第一个元素的第二个元素的第三个元素:

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

您的表格缺少一些单元格,这是没有意义的。您需要在每个维度上使用相同数量的元素。

于 2013-02-02T21:09:15.227 回答
2

You got the syntax for declaring 2D jagged array right, 3D jagged arrays are an extension of that. For example:

int[][][] jagged3d = new int[][][]
{
    new int[][] { new int[] { 111, 112 }, new int[] { 121, 122, 123 } },
    new int[][] { new int[] { 211 } }
}

But to access it, you need different syntax:

jagged3d[0][1][2]
于 2013-02-02T21:34:19.617 回答