[英]What is the difference between these two ways of declaring an array?
有什么区别:
int [][] myArray;
和
int [,] myOtherArray;
第一个是锯齿状数组:数组中的每个项目都是另一个数组
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
myArray
是一个锯齿状数组或数组数组。 myArray
每个元素本身都是一个int[]
。
myOtherArray
是一个矩形 (或多维 )数组 - 一个直接包含所有数据的对象。
你应该使用哪种取决于具体情况。 有时,为每个“行”数据创建一个数组(能够替换整行,并且具有不同长度的行)可能很方便,而在其他时候强制统一布局是有意义的。
我发现理解它的最好方法是看到它的图形表示=)
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]
第一个是锯齿状阵列,另一个是多维 - 不同之处在于锯齿状阵列的元素可以具有不同的尺寸和大小。
锯齿状阵列:
int [][] myArray;
矩形阵列:
int [,] myOtherArray;
引用比较矩形和锯齿状数组 :
矩形和锯齿状阵列的结构明显不同。
一维数组在CIL中具有特定指令,允许它们针对性能进行优化。 矩形数组没有这些指令,也没有针对同一级别进行优化。 因此,使用一维数组的锯齿状阵列有时会更有效 - 可以优化矩形阵列,但不能。 另一方面,对于矩形阵列,编程复杂度可以更小,因为它可以被视为单个单元,而不是阵列阵列。
这必须是重复的。 一个是锯齿状阵列,一个是二维阵列。 你应该可以从那里拿走它。
这两个语句都声明了未初始化的多维int数组。 第一个是锯齿状阵列,第二个是二维。
您可以在声明它的同时初始化二维数组,如下所示:
int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
要么,
int[,] array = new int[4, 2];
请参阅官方文档 :
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.