陣列是 C# 中最基礎的資料結構之一。本文系統整理陣列的核心屬性、foreach 遍歷技巧,並深入比較交錯陣列與矩形陣列的定義、記憶體配置與實際操作差異,幫助開發者根據場景選擇最適合的陣列類型。
陣列最常用的屬性是 Length,代表陣列所有維度的元素總數(即容量)。此外,Rank 可取得維度數,GetLength(dimension) 可取得指定維度的長度。屬性屬於名詞範疇,描述物件特性;方法則是動詞,描述物件行為。
foreach 專為遍歷集合或陣列設計,語法簡潔:
foreach (type item in array) { ... }
它能一次性遍歷任意維度的矩形陣列,無需撰寫多層 for 迴圈。但需注意:
item 的型別必須與陣列元素型別相同或可隱含轉換。foreach 僅供讀取,無法修改陣列元素值。foreach 逐行處理。宣告方式:int[,] rect = new int[3, 4];。所有列長度固定,記憶體連續配置,適合固定尺寸的資料表。
宣告方式:int[][] jagged = new int[3][];。第一維固定行數,每行再個別配置一維陣列,列長可異。屬於「陣列的陣列」,記憶體不連續,更節省空間,適合不規則資料(如各班級學生人數不同)。
// 宣告 3 行的交錯陣列
string[][] data = new string[3][];
// 第一行:3 欄
data[0] = new string[] { "姓名", "口頭禪", "籍貫" };
// 第二行:3 欄
data[1] = new string[] { "劉大夫", "很是費勁", "《一日一囧》" };
// 第三行:2 欄
data[2] = new string[2];
data[2][0] = "蠟筆小新";
data[2][1] = "老婆!";
// 遍歷:外層取得每行陣列,內層取得每欄值
foreach (string[] row in data)
{
foreach (string col in row)
{
Console.Write(col + " ");
}
Console.WriteLine();
}
| 特性 | 矩形陣列 | 交錯陣列 |
|---|---|---|
| 語法 | int[,] | int[][] |
| 記憶體 | 連續區塊 | 分散配置 |
| 列長度 | 固定 | 可變 |
| 初始化 | 一次完成 | 分行初始化 |
| foreach 遍歷 | 單層即可 | 需巢狀兩層 |
