簡體   English   中英

這兩種聲明數組的方式有什么區別?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM