3-6 陣列

陣列的定義

陣列代表了一連串相同的資料型態的資料,定義方法如下。

int[] a = new int[ 5 ];

int[]代表int的陣列。
任何型態後面加上[],就成為了陣列型別。

new 關鍵字的作用是用來建立物件或是呼叫建構函式。
new int[ 5 ]就是告訴記憶體我們需要 5 個 int 的空間。
我們稱 a 是長度為 5 的陣列。

另外要注意的是,陣列本身是參考型別 (3-5 實值型別 v.s. 參考型別)
也就是說 int[] a 如果只宣告名字而不為其建立陣列的話,a 的值就是 null (不指向任何記憶體位置)

多維陣列

上面介紹的陣列,我們稱為一維陣列。此外,C#也支援多維陣列。

int[,] a1 = new int[3, 2];  // 表示3 * 2的二維陣列
int[,,] a2 = new int[4, 5, 6];  // 表示4 * 5 * 6的三維陣列

上面這種多維陣列的每個維度,其陣列長度都是固定的。
有時候我們會需要不規則長度的陣列,因此有底下這種做法。

陣列的陣列

int[][] a = new int[ 3 ][];
a[ 0 ] = new int[ 4 ];
a[ 1 ] = new int[ 2 ];
a[ 2 ] = new int[ 6 ];

剛剛說過,任何型態後面加上[],就成為了陣列型別。
不要忘了陣列型別本身也是型別,所以陣列型別後面也可以加上[]。

第一行建立長度為 3,元素型態為int[]的陣列,初始值為 null。
第二行到第四行則分別定義每個元素的int[]。