成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#編程:使用迭代器

開發 后端
本文介紹了創建迭代器、調用迭代器等的方法。創建迭代器最常用的方法是對 IEnumerable 接口實現 GetEnumerator 方法。

創建迭代器最常用的方法是對 IEnumerable 接口實現 GetEnumerator 方法,例如:

  1. public System.Collections.IEnumerator GetEnumerator()  
  2. {  
  3.     for (int i = 0; i <  max; i++)  
  4.     {  
  5.         yield return i;  
  6.     }  

GetEnumerator 方法的存在使得類型成為可枚舉的類型,并允許使用 foreach 語句。如果上面的方法是 ListClass 的類定義的一部分,則可以對該類使用 foreach,如下所示:

  1. static void Main()  
  2. {  
  3.     ListClass listClass1 = new ListClass();  
  4.  
  5.     foreach (int i in listClass1)  
  6.     {  
  7.         System.Console.WriteLine(i);  
  8.     }  

foreach 語句調用 ListClass.GetEnumerator() 并使用返回的枚舉數來循環訪問值。有關如何創建返回 IEnumerator 接口的泛型迭代器的示例,請參見 如何:為泛型列表創建迭代器塊(C# 編程指南)。

還可以使用命名的迭代器以支持通過不同的方式循環訪問同一數據集合。例如,您可以提供一個按升序返回元素的迭代器,而提供按降序返回元素的另一個迭代器。迭代器還可以帶有參數,以便允許客戶端控制全部或部分迭代行為。下面的迭代器使用命名的迭代器 SampleIterator 實現 IEnumerable 接口:

  1. // Implementing the enumerable pattern  
  2. public System.Collections.IEnumerable SampleIterator(int start, int end)  
  3. {  
  4.     for (int i = start; i < = end; i++)  
  5.     {  
  6.         yield return i;  
  7.     }  

命名的迭代器的調用方法如下:

  1. ListClass test = new ListClass();  
  2. foreach (int n in test.SampleIterator(1, 10))  
  3. {  
  4.     System.Console.WriteLine(n);  

可以在同一個迭代器中使用多個 yield 語句,如下面的示例所示:

  1. public System.Collections.IEnumerator GetEnumerator()  
  2. {  
  3.     yield return "With an iterator, ";  
  4.     yield return "more than one ";  
  5.     yield return "value can be returned";  
  6.     yield return ".";  

然后可以使用下面的 foreach 語句輸出結果:

  1. foreach (string element in new TestClass())  
  2. {  
  3.     System.Console.Write(element);  

此示例顯示以下文本:

  1. With an iterator, more than one value can be returned.  

在 foreach 循環的每次后續迭代(或對 IEnumerator.MoveNext 的直接調用)中,下一個迭代器代碼體將從前一個 yield 語句之后開始,并繼續下一個語句直至到達迭代器體的結尾或遇到 yield break 語句。

【編輯推薦】

  1. C# winForm自定義鼠標樣式的兩種方法
  2. C#自定義消息框的設置圖解
  3. 掌握C#自定義泛型類:從初始化說起
  4. C#存儲過程的循序漸進
  5. 存儲過程的優勢及其調用方法介紹
責任編輯:book05 來源: hi.baidu
相關推薦

2009-08-26 16:26:37

C#迭代器模式

2009-08-11 13:59:41

迭代器模式C# Iterator

2013-03-15 10:37:08

C#

2009-08-26 16:37:07

C#迭代器局部變量

2015-09-16 15:11:58

C#異步編程

2009-08-26 10:34:15

C#類型C#變量

2009-08-24 11:02:52

C#接口映射

2009-08-24 09:55:26

C#接口轉換

2025-01-22 08:06:38

C#yield數據迭代

2022-10-26 08:25:06

Python編程迭代器

2010-09-28 08:52:00

C#Visual Stud

2012-09-24 15:35:24

C#網絡協議UDP

2012-09-24 15:13:50

C#網絡協議TCP

2009-08-25 17:13:57

C#串口編程

2009-08-14 16:08:34

讀寫BinaryC#編程實例

2009-08-27 14:12:02

C# interfac

2021-10-12 17:47:22

C# TAP異步

2009-08-27 16:30:08

C#編程命名規范

2011-04-13 17:31:16

C#.NET

2024-03-04 18:49:59

反射C#開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草.com| 国产乱码精品一区二区三区中文 | 亚洲精品成人av久久 | 欧美在线一区二区视频 | 日韩免费网 | 国产精品海角社区在线观看 | 在线观看视频中文字幕 | 男人天堂网址 | 久久夜视频 | 中文字幕一区二区三区精彩视频 | av电影手机版 | 992tv人人草 久久精品超碰 | 午夜视频导航 | 免费国产精品久久久久久 | 91久久精品一区二区三区 | 久久国产精品免费一区二区三区 | 国产一区在线免费观看 | eeuss国产一区二区三区四区 | 成人九区 | 日本午夜一区 | 欧美一区二区三区在线观看 | 欧美黄 片免费观看 | 成人国产精品久久 | 瑞克和莫蒂第五季在线观看 | 国产综合区| 国产91精品久久久久久久网曝门 | 亚洲综合无码一区二区 | 久久精品国产99国产精品 | 丁香婷婷久久久综合精品国产 | 国产亚洲精品区 | 久久久久亚洲精品 | 国产精品二区三区 | 日韩三级 | 午夜网| 免费一区| 男人天堂社区 | 中文精品视频 | 神马九九| 日本a网站| 精品国产乱码一区二区三区a | 在线视频一区二区三区 |