Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 三维锯齿阵列_C#_Multidimensional Array_Jagged Arrays - Fatal编程技术网

C# 三维锯齿阵列

C# 三维锯齿阵列,c#,multidimensional-array,jagged-arrays,C#,Multidimensional Array,Jagged Arrays,有没有办法像这样访问我的三维锯齿阵列: 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 }

有没有办法像这样访问我的三维锯齿阵列:

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

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

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

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

对于第一个问题,您试图访问锯齿数组第一个元素的第二个元素的第三个元素:

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

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

您正确地掌握了声明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]

您已经掌握了声明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]

我很困惑。您的问题询问如何访问3D锯齿阵列,但您的代码似乎表明您在创建它时遇到了问题。它是哪一个?我寻找一个数组声明,在那里我可以访问锯齿状数组,如[x,y,z]。我可以访问jaggedArray,如:jaggedArray[0][1];//3例如,第二个数组声明会导致错误。但我希望它能像这样工作(或类似)。你的
jaggedArray
不是3D而是2D。唯一能用
jaggedArray[i][j]
访问它的东西我很困惑。您的问题询问如何访问3D锯齿阵列,但您的代码似乎表明您在创建它时遇到了问题。它是哪一个?我寻找一个数组声明,在那里我可以访问锯齿状数组,如[x,y,z]。我可以访问jaggedArray,如:jaggedArray[0][1];//3例如,第二个数组声明会导致错误。但我希望它能像这样工作(或类似)。你的
jaggedArray
不是3D而是2D。唯一能用
jaggedArray[i][j]
访问它的方法我明白了,谢谢。那么我的第一个数组声明是正确的方法吗?@user1772306在您的情况下,是的。大多数情况下我更喜欢多维数组,但这绝对是个例外。我理解,谢谢。那么我的第一个数组声明是正确的方法吗?@user1772306在您的情况下,是的。在大多数情况下,我更喜欢多维数组,但这绝对是个例外。