| 陣列限制 | 集合優勢 |
|---|---|
| 固定大小,無法伸縮 | 可變長度,動態增減 |
| 必須宣告元素型別 | 元素型別為 object,支援任意型別 |
| 無法宣告唯讀 | 提供 ReadOnly 包裝器 |
| 整數索引存取 | 支援自訂索引型別,Stack/Queue 不支援索引 |
雖有 Array.Resize,但實質是建立新陣列複製,效能較差。
最基礎的集合,功能豐富:
var al = new ArrayList();
al.Add(100); // 單一新增
foreach (int n in new[] { 9, 3, 7, 2, 4, 8 })
al.Add(n); // 批次新增
int[] arr = { 11, 12 };
al.AddRange(arr); // 陣列批次新增
al.Remove(3); // 移除值為 3
al.RemoveAt(3); // 移除索引 3
var al2 = new ArrayList(al.GetRange(1, 3)); // 子範圍建立新集合
// 遍歷方式一:foreach(無需轉型)
foreach (int i in al) Console.WriteLine(i);
// 遍歷方式二:for 迴圈(需轉型)
for (int i = 0; i < al2.Count; i++)
{
int n = (int)al2[i];
Console.WriteLine(n);
}
Add/AddRange:新增元素Remove/RemoveAt/RemoveRange:移除Insert/InsertRange:插入Contains/IndexOf/LastIndexOf:查詢Sort/Reverse:排序反轉ToArray:轉為陣列Capacity/Count:容量與實際數量將介紹 Stack、Queue、Hashtable、SortedList、NameValueCollection 等進階集合。