第1節 C 2 0新特性之四 迭代器

2021-04-20 00:11:26 字數 917 閱讀 4001

迭代器

迭代器是一種方法、

get訪問器或運算子,它通過使用

yield

關鍵字對陣列或集合類執行自定義迭代。

yield 返回語句會導致源序列中的元素在訪問源序列中的下乙個元素之前立即返回給呼叫方。儘管您以方法的形式編寫迭代器,但編譯器會將其轉換為乙個實際上是狀態機的巢狀類。只要客戶端**中的

foreach 迴圈繼續進行,此類就會跟蹤迭代器的位置。

說明:

若要了解編譯器在後台執行了什麼操作,請使用 ildasm.exe 工具來檢視為迭代器方法生成的中間語言 (il) **。

將使用 foreach

語句從客戶端**中呼叫迭代器。例如,您可以為類建立乙個迭代器,該迭代器將按相反順序返回元素,或在迭代器返回元素之前對每個元素執行操作。在為類

或結構建立迭代器時,您不必實現整個 ienumerator

介面。當編譯器檢測到迭代器時,它將自動生成 ienumerator

或 ienumerator<

(of

<

(t>

)>

) 介面的 current、movenext 和 dispose 方法。

迭代器概述

yield

關鍵字用於指定返回的乙個或多個值。到達 yield return 語句時,會儲存當前位置。下次呼叫迭代器時將從此位置重新開始執行。

迭代器對集合類特別有用,它提供一種簡單的方法來迭代複雜的資料結構(如二進位制樹)。

示例 在本示例中,daysoftheweek 類是將一周中的各天作為字串進行儲存的簡單集合類。foreach

迴圈每迭代一次,都返回集合中的下乙個字串。

c#

輸出 複製**

sun mon tue wed thr fri sat

C 2 0的新特性

c 2.0的新特性 1 區域性型別 就是把乙個類 介面,結構 分成幾部分,系統編譯時自動的組合 利用關鍵字partial修飾 partial class a partial class a 只要類的一部分繼承乙個父類,那整個類都繼承。沒一部分都可以繼承乙個介面,則整個類繼承所有介面 類的一部分一但被...

C 2 0 有哪些新特性?

泛型 在我看來,泛型就是通過將資料型別引數化從而實現了 的更為靈活的復用,泛型的出現使得c 能夠使用同一段 來操作多種資料型別。泛型無疑是c 2.0最重大的改進,它的出現賦予了c 更強的型別安全,更好的復用,更高的效率和更清晰的約束。匿名方法 匿名方法允許我們將 直接與委託例項相關聯,使委託例項化工...

從C 2 0新特性到C 3 5新特性

一 c 2.0 新特性 1 泛型 listobj list new list obj list.add new myobject 2 部分類 partial namespace set 或在另乙個檔案中 public partial class class1 3 靜態類 public static ...