c# 程式設計指南
迭代器(c# 程式設計指南)
迭代器是一種方法、get 訪問器或運算子,它通過使用 yield 關鍵字對陣列或集合類執行自定義迭代。yield返回語句會導致源序列中的元素在訪問源序列中的下乙個元素之前立即返回給呼叫方。儘管您以方法的形式編寫迭代器,但編譯器會將其轉換為乙個實際上是狀態機的巢狀類。只要客戶端**中的foreach迴圈繼續進行,此類就會跟蹤迭代器的位置。
注意:
若要了解編譯器在後台執行了什麼操作,請使用 ilda**.exe 工具來檢視為迭代器方法生成的中間語言 (il) **。
將使用 foreach 語句從客戶端**中呼叫迭代器。例如,您可以為類建立乙個迭代器,該迭代器將按相反順序返回元素,或在迭代器返回元素之前對每個元素執行操作。在為類或結構建立迭代器時,您不必實現整個 ienumerator 介面。當編譯器檢測到迭代器時,它將自動生成 ienumerator 或 ienumerator<
(of
<
(t>
)>
) 介面的 current、movenext 和 dispose 方法。
迭代器概述
yield 關鍵字用於指定返回的乙個或多個值。到達yield return語句時,會儲存當前位置。下次呼叫迭代器時將從此位置重新開始執行。
迭代器對集合類特別有用,它提供一種簡單的方法來迭代複雜的資料結構(如二進位制樹)。
相關章節
示例 在本示例中,daysoftheweek 類是將一周中的各天作為字串進行儲存的簡單集合類。foreach 迴圈每迭代一次,都返回集合中的下乙個字串。
c#
輸出 c# 語言規範
有關更多資訊,請參見 c# 語言規範中的以下各章節:
摘自msdn
Python函式式程式設計指南(三) 迭代器
python generators 生成器 生成器是這樣乙個函式,它記住上一次返回時在函式體中的位置。對生成器函式的第二次 或第 n 次 呼叫跳轉至該函式中間,而上次呼叫的所有區域性變數都保持不變。生成器不僅 記住 了它資料狀態 生成器還 記住 了它在流控制構造 在命令式程式設計中,這種構造不只是資...
Ruby Fiber指南(四)迭代器
ruby fiber指南 一 基礎 ruby fiber指南 二 引數傳遞 ruby fiber指南 三 過濾器 ruby fiber指南 四 迭代器 ruby actor指南 五 實現actor 上一節介紹了利用fiber實現類unix管道風格的過濾鏈,這一節將介紹利用fiber來實現迭代器,我們...
使用迭代器程式設計
輸入迭代器 輸入迭代器是最普通的型別。輸入迭代器至少能夠使用 和!測試是否相等 使用 來訪問資料 使用 操作來遞推迭代器到下乙個元素或到達past the end值 為了理解迭代器和stl函式是如何使用它們的,現在來看一下find 模版函式的定義 template inputiterator fin...