深入理解C#中的IEnumerable
和IEnumerator
:高效迭代的利器
在軟體開發中,高效迭代物件集合至關重要。 .NET架構為此提供了兩個關鍵介面:IEnumerable
和IEnumerator
。
IEnumerable
介面
IEnumerable
介面表示一個物件集合。它定義了一個單一方法GetEnumerator()
,該方法傳回一個IEnumerator
物件。任何允許迭代其元素的類別都可以實現此介面。
IEnumerator
介面
IEnumerator
介面表示一個枚舉器,這是一個可用於迭代物件集合的物件。它定義了兩個方法:MoveNext()
和Current()
。 MoveNext()
將枚舉器推進到集合中的下一個元素,並傳回一個布林值,指示迭代器是否已到達集合的末端。 Current()
傳回集合中的目前元素。
IEnumerable
和foreach
語句的用法
IEnumerable
通常與C#中的foreach
語句結合使用。 foreach
語句提供了一種簡潔方便的方式來迭代物件集合。編譯器會自動呼叫集合物件的GetEnumerator()
方法,並使用產生的IEnumerator
物件迭代其元素。
為什麼要用IEnumerable
和IEnumerator
?
效率: IEnumerable
和IEnumerator
允許透過避免將整個集合載入到記憶體中來實現高效迭代。它們提供了一種機制,可以逐一存取集合的元素,從而減少記憶體開銷並提高效能。
可擴充性: IEnumerable
和IEnumerator
是標準接口,任何類別都可以實現它們。這允許開發人員創建可以以一致的方式輕鬆迭代的自訂類,而不管其內部實作如何。
範例用法
考慮以下範例:
<code class="language-csharp">using System; using System.Collections.Generic; public class MyCollection : IEnumerable<int> { private List<int> _data = new List<int>(); public IEnumerator<int> GetEnumerator() { foreach (int item in _data) { yield return item; } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public void Add(int value) { _data.Add(value); } } public class Example { public static void Main(string[] args) { MyCollection myCollection = new MyCollection(); myCollection.Add(1); myCollection.Add(2); myCollection.Add(3); foreach (int item in myCollection) { Console.WriteLine(item); } } }</code>
在這個範例中,MyCollection
類別實作了IEnumerable<int>
並定義了一個自訂枚舉器來迭代其元素。然後,foreach
語句能夠迭代集合並將元素列印到控制台。
以上是`IEnumerable` 和 `IEnumerator` 如何在 C# 中實現高效率迭代?的詳細內容。更多資訊請關注PHP中文網其他相關文章!