C# 这两种声明数组的方法有什么区别?

C# 这两种声明数组的方法有什么区别?,c#,C#,以下两者之间的区别是什么: int [][] myArray; 及 第一个是交错数组:数组中的每个项都是另一个数组 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 mat

以下两者之间的区别是什么:

int [][] myArray;


第一个是交错数组:数组中的每个项都是另一个数组

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[,]array4={{1,2},{3,4},{5,6},{7,8}

或者

int[,]数组=新的int[4,2]

参考官方版本:

锯齿状阵列:

int [][] myArray;
矩形阵列:

int [,] myOtherArray;
引述:

矩形和矩形的结构 锯齿状阵列具有显著的优势 不一样

一维数组具有特定的属性 CIL中允许 它们需要针对性能进行优化。 矩形阵列没有这些属性 指令,并且没有优化到 同样的水平。正因为如此,它 有时可以更有效地使用 一维交错阵列 可以优化的阵列比 矩形数组,它不能。在…上 另一方面,程序设计 对于一个企业来说,复杂性可能更小 矩形阵列,因为它可以 将其视为单个单元,而不是 数组的数组


我发现理解它的最好方法是查看它的图形表示=)

看起来像这样

[0] - [0]
[1] - [0][1]
[2] - [0][1][2][3]
[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[,] twodimensional = new int[3,4]
看起来像这样

[0] - [0]
[1] - [0][1]
[2] - [0][1][2][3]
[0,0][0,1][0,2][0,3]
[1,0][1,1][1,2][1,3]
[2,0][2,1][2,2][2,3]

您能否详细说明或提供资源,说明哪种用途更合适?@smartcaveman:恐怕不容易。将有非常具体的情况的利弊。如果你给我一个特殊的情况,我可以给出一些想法。注意,混合使用这两种技术——制作一个不规则的多维数组——是合法的,但几乎肯定是个坏主意。这使得代码很难阅读。有关详细信息,请参阅我的文章。