陣列是**固定大小**、同質型別元素的連續記憶體區塊。索引從 0 起算,Length 屬性取得長度 (不可變)。
int[] arr; // 宣告參考變數 (null)
arr = new int[5]; // 配置 5 個元素,自動初始化為 0
int[] arr = new int[5]; // {0,0,0,0,0}
string[] names = new string[3]; // {null,null,null}
int[] arr1 = new int[5] { 1, 3, 5, 7, 9 }; // 明確大小 + 初始化器
int[] arr2 = new int[] { 1, 3, 5, 7, 9 }; // 省略大小
int[] arr3 = { 1, 3, 5, 7, 9 }; // **最簡潔** (僅限宣告行)
string[] days = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
var points = new Point[]
{
new Point(0,0),
new Point(10,20),
new Point(30,40)
};
var arr = new[] { 1, 2, 3 }; // int[]
var mixed = new[] { 1, "two", 3.0 }; // 編譯錯誤:型別不一致
int[] arr = new int[5] { [0]=10, [4]=20 }; // {10,0,0,0,20}
int[] a = new int[3]; // {0,0,0}
string[] b = new string[3]; // {null,null,null}
bool[] c = new bool[3]; // {false,false,false}
| 操作 | 語法 | 範例 |
|---|---|---|
| 存取元素 | arr[index] | arr[0] = 100; |
| 取得長度 | arr.Length | int n = arr.Length; |
| 遍歷 (for) | for (int i=0; i<arr.Length; i++) | Console.WriteLine(arr[i]); |
| 遍歷 (foreach) | foreach (var item in arr) | Console.WriteLine(item); |
| 複製 | arr.Clone() / arr.ToArray() | int[] copy = (int[])arr.Clone(); |
| 排序 | Array.Sort(arr) | Array.Sort(arr); |
| 搜尋 | Array.IndexOf / BinarySearch | int idx = Array.IndexOf(arr, 5); |
| 轉 List | arr.ToList() | var list = arr.ToList(); |
List<T>。ArrayPool<T> 複用。
// 多維陣列 (矩形) - 連續記憶體
int[,] matrix = new int[3, 4] { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
int val = matrix[1, 2]; // 7
// 交錯陣列 (陣列的陣列) - 每行長度可不同
int[][] jagged = new int[3][];
jagged[0] = new int[] {1,2};
jagged[1] = new int[] {3,4,5,6};
jagged[2] = new int[] {7};
掌握一維陣列各種初始化寫法,配合 List<T> 彈性集合,即能應付大多數資料儲存需求。