C# 快速導覽 - 迭代器

迭代器 (iterator) 是一種設計集合物件 (object) 的程式設計,這樣的物件可用 foreach 迴圈 (loop) 存取每個元素。



舉例如下
public class Week : System.Collections.IEnumerable {
    string[] m_Days = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturdar" };

    public System.Collections.IEnumerator GetEnumerator() {
        for (int i = 0; i < m_Days.Length; i++) {
            yield return m_Days[i];
        }
    }
}

class TestWeek {
    static void Main() {
        Week week = new Week();
        foreach (string day in week) {
            System.Console.WriteLine(day);
        }
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:yield.cs
    功能:示範 C# 程式 
    作者:張凱慶
    時間:西元 2013 年 6 月 */


最簡單的方式就是實作 System.Collections 中的 IEnumerable 介面 (interface)
public class Week : System.Collections.IEnumerable {


然後實作 GetEnumerator() 方法 (method) ,最後的 return 前要加上 yield
public System.Collections.IEnumerator GetEnumerator() {
    for (int i = 0; i < m_Days.Length; i++) {
        yield return m_Days[i];
    }
}


編譯執行,結果如下



中英文術語對照
迭代器iterator
物件object
迴圈loop
介面interface
方法method


您可以繼續參考
泛型
多型
迭代器
名稱空間


相關目錄
回 C# 快速導覽
回 C# 教材
回首頁


參考資料
Standard ECMA-334 C# Language Specification
msdn: Iterator (C# 程式設計手冊)

沒有留言: