久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C# 迭代器實現(xiàn)枚舉器

 昵稱10504424 2013-02-19

在上一篇日志中說的手動實現(xiàn)枚舉器來枚舉自定義的類型,,

http://blog.csdn.net/weixingstudio/article/details/6817319

可以看到過程非常復雜,,而且容易出錯。為了減輕程序員的負擔,,C#還提供了迭代器來幫助程序員完成其中的大部分工作,。

 

迭代器(iterator)是能生成已排序值序列的一個代碼塊。迭代器實質上并不是一個可枚舉的類的成員,,迭代器只是指定了一個序列,,枚舉器應該用這個序列來返回其中的值。也就是說,,迭代器只是對枚舉序列的一個描述,,C#編譯器可以利用它來創(chuàng)建自己的枚舉器。

 

下面看代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5.   
  6. namespace Iterator  
  7. {  
  8.     class Program  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             MyCollection<string> collect = new MyCollection<string>();  
  13.             foreach (string t in collect)  
  14.             {  
  15.                 Console.WriteLine(t);  
  16.             }  
  17.         }  
  18.     }  
  19.   
  20.     class MyCollection<T> : IEnumerable<T>  
  21.     {  
  22.         private List<T> myList=new List<T>();  
  23.   
  24.         public void FillList(params T[] items)  
  25.         {  
  26.             foreach(T t in items)  
  27.             {  
  28.                 myList.Add(t);  
  29.             }  
  30.         }  
  31.   
  32.         IEnumerator<T> IEnumerable<T>.GetEnumerator()  
  33.         {  
  34.             foreach (var t in myList)  
  35.             {  
  36.                 yield return t;  
  37.             }  
  38.         }  
  39.   
  40.         System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()  
  41.         {  
  42.             //throw new NotImplementedException();  
  43.             return null;  
  44.         }  
  45.     }  
  46. }  


MyCollection 這個類實現(xiàn)了Ienumerable<T>接口,,并且是顯示的實現(xiàn),。在GetEnumerator() 方法中,通過yield 關鍵字返回要獲取的數(shù)據,。

 

yield 說明:yield 關鍵字制訂了每一次迭代要反悔的值,,它臨時將方法叫停,將一個值傳給調用者,。當調用者需要下一個值時,,GetEnumerator() 方法就從上次暫停的地方繼續(xù),生成下一個值,。最終所有的數(shù)據都被訪問,,GetEnumerator()方法將終止。

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多