## Chapter8 列舉器與集合
### 一、列舉器
而什麼是列舉器呢?我們可以將 Enumerator 視為是一個巡覽器,負責將它所附屬的資料集合中的元素,一個一個的取出並回傳。
.Net Framework 將巡覽器的定義置於 IEnumerator 界面,內含以下兩個方法與一個屬性;
```C#=
public interface IEnumerator
{
bool MoveNext();
object Current { get; }
void Reset();
}
```

* MoveNext():將列舉器移動到集合的下一個元素。如果成功移動,返回 true;否則返回 false。
* Current:獲取當前元素。
* Reset():將列舉器重置到初始位置
### 二、集合
集合是一種用來存儲和管理一組資料的結構。
#### (一)泛型集合類別
泛型集合類別使用類型參數來定義集合中元素的類型。這種集合類別提供了更高的類型安全性和效能,因為在編譯時期確定了元素的類型,避免了運行時期的類型轉換。
#### (二)非泛型集合類別
非泛型集合類別不使用類型參數,而是使用 object 類型來存儲元素。這導致在取出元素時需要進行類型轉換(Unboxing),可能會降低效能並增加出錯的風險。
| 非泛型集合類別 | 泛行集合類別 | 功能說明 |
|----------|--------|-------------|
| ArrayList | List<T> | 一個強類型的動態陣列 |
| Stack | Stack<T> | 一個後進先出(LIFO)的集合 |
| Queue | Queue<T> | 一個先進先出(FIFO)的集合 |
| Hashtable | Dictionary<TKey, TValue> | 一個用於存儲鍵值對的集合 |
| StoredList | SortedList<TKey, TValue> | 和字典相似具有排序功能的集合 |
以下是集合常用的一些指令
```C#=
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// List<T> 範例
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6); // 添加
numbers.Remove(2); // 移除
foreach (int number in numbers)
{
Console.WriteLine(number);
}
// Dictionary<TKey, TValue> 範例
Dictionary<string, int> ages = new Dictionary<string, int>
{
{ "Alice", 30 },
{ "Bob", 25 }
};
ages["Charlie"] = 35; // 添加或更新
int age = ages["Alice"];
Console.WriteLine($"Alice's age is {age}");
}
}
```
以上是Chapter 8的內容,後面的集合在課本中還包含著很多屬性與方法,在這裡就不多贅述,有興趣的可以去翻課本,這裡只做簡單的介紹,有問題都歡迎詢問~
製作者:劉柏廷
Email: liubaiting907@gmail.com