2010-08-12 179 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[,]的優勢在於它更簡單,並且執行規則,這使得它在您需要時非常有用。 (更換二維數組中的整行比使用數組陣列更難。)

相關問題