## Chapter8 列舉器與集合 ### 一、列舉器 而什麼是列舉器呢?我們可以將 Enumerator 視為是一個巡覽器,負責將它所附屬的資料集合中的元素,一個一個的取出並回傳。 .Net Framework 將巡覽器的定義置於 IEnumerator 界面,內含以下兩個方法與一個屬性; ```C#= public interface IEnumerator { bool MoveNext(); object Current { get; } void Reset(); } ``` ![unnamed](https://hackmd.io/_uploads/rJ43a8VEA.gif) * 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