有什么区别:
int [][] myArray;
和
int [,] myOtherArray;
答案 0 :(得分:21)
第一个是锯齿状数组:一个数组,其中数组中的每个项目是另一个数组
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];
第二个是多维数组,也就是矩阵。
int[,] array = new int[4, 2]; // create a 4 by 2 matrix
答案 1 :(得分:17)
myArray
是jagged array或数组数组。 myArray
的每个元素本身都是int[]
。
myOtherArray
是rectangular (or multidimensional) array - 一个直接包含所有数据的对象。
你应该使用哪种取决于具体情况。有时,为每个“行”数据创建一个数组(能够替换整行,并且具有不同长度的行)可能很方便,而在其他时候强制统一布局是有意义的。
答案 2 :(得分:9)
我发现理解它的最好方法是看到它的图形表示=)
int[][] jagged = new int[3][];
jagged[0] = new int[1];
jagged[1] = new int[2];
jagged[2] = new int[4];
将会是这样的
[0] - [0]
[1] - [0][1]
[2] - [0][1][2][3]
虽然是二维的
int[,] twodimensional = new int[3,4]
将会是这样的
[0,0][0,1][0,2][0,3]
[1,0][1,1][1,2][1,3]
[2,0][2,1][2,2][2,3]
答案 3 :(得分:2)
第一个是锯齿状阵列,另一个是多维 - 不同之处在于锯齿状阵列的元素可以具有不同的尺寸和大小。
答案 4 :(得分:1)
锯齿状阵列:
int [][] myArray;
矩形阵列:
int [,] myOtherArray;
引用Comparing Rectangular and Jagged Arrays:
矩形和矩形的结构 锯齿状阵列很明显 不同。
一维数组具有特定性 CIL中允许的说明 它们将针对性能进行优化。 矩形阵列没有这些 说明,并没有优化 同一水平。因此,它 有时可以更有效地使用 锯齿状的一维阵列 数组 - 可以优化 - 矩形阵列,不能。上 另一方面,编程 a的复杂性可能更低 矩形阵列,因为它可以 作为一个单元,而不是 数组数组。
答案 5 :(得分:0)
这必须是重复的。一个是锯齿状阵列,一个是二维阵列。你应该可以从那里拿走它。
答案 6 :(得分:0)
两个语句都声明了未初始化的多维int数组。第一个是锯齿状阵列,第二个是二维阵列。
您可以在声明它的同时初始化二维数组:
int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
OR,
int[,] array = new int[4, 2];
请参阅官方documentation: