[英]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.