新聞中心
創(chuàng)建迭代器最常用的方法是對(duì) IEnumerable 接口實(shí)現(xiàn) GetEnumerator 方法,例如:

10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有黃陂免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
- public System.Collections.IEnumerator GetEnumerator()
- {
- for (int i = 0; i < max; i++)
- {
- yield return i;
- }
- }
GetEnumerator 方法的存在使得類(lèi)型成為可枚舉的類(lèi)型,并允許使用 foreach 語(yǔ)句。如果上面的方法是 ListClass 的類(lèi)定義的一部分,則可以對(duì)該類(lèi)使用 foreach,如下所示:
- static void Main()
- {
- ListClass listClass1 = new ListClass();
- foreach (int i in listClass1)
- {
- System.Console.WriteLine(i);
- }
- }
foreach 語(yǔ)句調(diào)用 ListClass.GetEnumerator() 并使用返回的枚舉數(shù)來(lái)循環(huán)訪問(wèn)值。有關(guān)如何創(chuàng)建返回 IEnumerator 接口的泛型迭代器的示例,請(qǐng)參見(jiàn) 如何:為泛型列表創(chuàng)建迭代器塊(C# 編程指南)。
還可以使用命名的迭代器以支持通過(guò)不同的方式循環(huán)訪問(wèn)同一數(shù)據(jù)集合。例如,您可以提供一個(gè)按升序返回元素的迭代器,而提供按降序返回元素的另一個(gè)迭代器。迭代器還可以帶有參數(shù),以便允許客戶端控制全部或部分迭代行為。下面的迭代器使用命名的迭代器 SampleIterator 實(shí)現(xiàn) IEnumerable 接口:
- // Implementing the enumerable pattern
- public System.Collections.IEnumerable SampleIterator(int start, int end)
- {
- for (int i = start; i < = end; i++)
- {
- yield return i;
- }
- }
命名的迭代器的調(diào)用方法如下:
- ListClass test = new ListClass();
- foreach (int n in test.SampleIterator(1, 10))
- {
- System.Console.WriteLine(n);
- }
可以在同一個(gè)迭代器中使用多個(gè) yield 語(yǔ)句,如下面的示例所示:
- public System.Collections.IEnumerator GetEnumerator()
- {
- yield return "With an iterator, ";
- yield return "more than one ";
- yield return "value can be returned";
- yield return ".";
- }
然后可以使用下面的 foreach 語(yǔ)句輸出結(jié)果:
- foreach (string element in new TestClass())
- {
- System.Console.Write(element);
- }
此示例顯示以下文本:
- With an iterator, more than one value can be returned.
在 foreach 循環(huán)的每次后續(xù)迭代(或?qū)?IEnumerator.MoveNext 的直接調(diào)用)中,下一個(gè)迭代器代碼體將從前一個(gè) yield 語(yǔ)句之后開(kāi)始,并繼續(xù)下一個(gè)語(yǔ)句直至到達(dá)迭代器體的結(jié)尾或遇到 yield break 語(yǔ)句。
【編輯推薦】
- C# winForm自定義鼠標(biāo)樣式的兩種方法
- C#自定義消息框的設(shè)置圖解
- 掌握C#自定義泛型類(lèi):從初始化說(shuō)起
- C#存儲(chǔ)過(guò)程的循序漸進(jìn)
- 存儲(chǔ)過(guò)程的優(yōu)勢(shì)及其調(diào)用方法介紹
網(wǎng)頁(yè)標(biāo)題:C#編程:使用迭代器
本文地址:http://m.fisionsoft.com.cn/article/dpehdoi.html


咨詢
建站咨詢
