2010-08-12 185 views

回答

40

int[,]矩形阵列 - 其具有两个维度一个对象。数组中的每个元素都是一个整数;所有元素都连续存储在内存中。

int[][]锯齿状数组 - 其中每个元素依次为int[]。 (所以它是一个数组数组。)尽管“顶级”数组的每个元素都是连续存储的,但这些元素只是对其他数组的引用,这些数组可能在内存中的任何位置。

虽然矩形数组每行总是具有相同的列数,但在锯齿形数组中,每个元素可以具有不同的长度(或者实际上可以为空)。

各有各的优缺点;矩形阵列在记忆方面更加紧凑,但不允许稀疏人群。 Jagged数组在CLR中速度更快,但没有良好的缓存一致性。在某些情况下,锯齿阵列中“行阵列”所占用的额外空间可能很重要 - 如果您有一个仅占用80000字节加上一个数组对象开销的int[10000, 2],而在锯齿状阵列中则是80000字节的数据和10001数组对象的开销。

MSDN在其arrays tutorial中有更多的信息。

+3

这是我读过的最好的答案(不管问题)。 – 2012-05-05 05:08:29

11

第一个是偶数(每行包含相同数量的元素的) 第二个是锯齿状(每一行可包含不同数量的元件)

换一种方式,第一个是多维数组 - 矩形数组。第二个是一个数组的数组(并因此,每个单独的阵列可以是不同的长度。)

4

int[x,y]是具有固定尺寸的二维阵列(例如int[4,5])。
int[][]是一个锯齿形数组,它表示它是一个数组数组,每个数组可以有不同数量的元素。

2

对于创建矩阵,int[,]更容易。锯齿阵列int[][]需要更多的工作(您需要一个额外的循环到setup the complete matrix)。

但是你可能仍然想考虑int[][],因为它是faster

0

正如其他人所提到的,int[,]是一个多维/矩形阵列,而int[][]是一个数组或数组“锯齿”数组。

至于什么时候使用一个,int[][]可能是一个痛苦的设置(每行都必须创建),但它似乎总是快一点。 int[,]的优势在于它更简单,并且执行规则,这使得它在您需要时非常有用。 (更换二维数组中的整行比使用数组阵列更难。)

相关问题