深入理解 IEnumerable 與 IEnumerator:.NET 迭代器的核心機制
在 .NET 程式設計中,實作 IEnumerable 介面是啟用 foreach 迴圈的關鍵。雖然 foreach 語法簡潔易用,但其底層依賴 IEnumerable 和 IEnumerator 介面。
IEnumerable 和 IEnumerator 的應用場景
IEnumerable 不是用來「取代」 foreach 的;相反,實作 IEnumerable 是使用 foreach 的前提條件。當您編寫 foreach 迴圈時,編譯器實際上會將其轉換為一系列對 IEnumerator 的 MoveNext 和 Current 方法的呼叫。
IEnumerable 與 IEnumerator 的差別
為什麼我們需要 IEnumerable 和 IEnumerator?
實作 IEnumerable
要使類別可迭代,您需要實作 IEnumerable 接口,這需要實作返回 IEnumerator 的 GetEnumerator 方法。
範例
考慮以下實作 IEnumerable 介面的自訂物件類別:
<code class="language-csharp">public class CustomCollection : IEnumerable<int> { private int[] data; public IEnumerator<int> GetEnumerator() { return new CustomEnumerator(data); } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } private class CustomEnumerator : IEnumerator<int> { // MoveNext 和 Current 方法用于遍历 data } }</code>
透過實作 IEnumerable 並提供自訂枚舉器,您現在可以使用 foreach 迴圈遍歷 CustomCollection 的實例。
以上是C# 中的 IEnumerable 和 IEnumerator:它們如何啟用 foreach 迴圈和自訂迭代器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!