亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中的IEnumerable簡介及簡單實現實例

2020-01-24 02:07:47
字體:
來源:轉載
供稿:網友

IEnumerable這個接口在MSDN上是這么說的,它是一個公開枚舉數,該枚舉數支持在非泛型集合上進行簡單的迭代。換句話說,對于所有數組的遍歷,都來自IEnumerable,那么我們就可以利用這個特性,來定義一個能夠遍歷字符串的通用方法.

下面先貼出code.

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections; namespace mycs{  class Program  {    static void Main(string[] args)    {      charlist mycharlist = new charlist("hello world");      foreach (var c in mycharlist)      {        Console.Write(c);      }     Console.ReadLine();    }  }   class charlist : IEnumerable  {    public string TargetStr { get; set; }     public charlist(string str)    {      this.TargetStr = str;    }    public IEnumerator GetEnumerator()    {      //c# 1.0      return new CharIterator(this.TargetStr);      //c# 2.0      /*      for (int index = this.TargetStr.Length; index > 0;index-- )      {        yield return this.TargetStr[index - 1];      }       */    }  }  class CharIterator : IEnumerator  {    public string TargetStr { get; set; }    public int position { get; set; }     public CharIterator(string targetStr)    {      this.TargetStr = targetStr;      this.position = this.TargetStr.Length;    }    public object Current    {      get      {        if (this.position==-1||this.position==this.TargetStr.Length)        {          throw new InvalidOperationException();        }        return this.TargetStr[this.position];      }    }    public bool MoveNext()    {      if (this.position!=-1)      {        this.position--;      }      return this.position > -1;    }    public void Reset()    {      this.position = this.TargetStr.Length;    }  }}


在上面的例子c# 1.0中,CharIterator就是迭代器的實現,position字段存儲當前的迭代位置,通過Current屬性可以得到當前迭代位置的元素,MoveNext方法用于更新迭代位置,并且查看下一個迭代位置是不是有效的。

當我們通過VS單步調試下面語句的時候:

復制代碼 代碼如下:

foreach (var c in charList)

代碼首先執行到foreach語句的charList處獲得迭代器CharIterator的實例,然后代碼執行到in會調用迭代器的MoveNext方法,最后變量c會得到迭代器Current屬性的值;前面的步驟結束后,會開始一輪新的循環,調用MoveNext方法,獲取Current屬性的值。

通過C# 1.0中迭代器的代碼看到,要實現一個迭代器就要實現IEnumerator接口,然后實現IEnumerator接口中的MoveNext、Reset方法和Current屬性。

在C# 2.0中可以直接使用yield語句來簡化迭代器的實現。

如上面public IEnumerator GetEnumerator()方法中注釋掉的部分。
通過上面的代碼可以看到,通過使用yield return語句,我們可以替換掉整個CharIterator類。

yield return語句就是告訴編譯器,要實現一個迭代器塊。如果GetEnumerator方法的返回類型是非泛型接口,那么迭代器塊的生成類型(yield type)是object,否則就是泛型接口的類型參數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色与欲影视天天看综合网| 成人久久一区二区| 国产偷国产偷亚洲清高网站| 国产成人久久精品| 91久久久久久久久久| 亚洲专区在线视频| 成人免费在线网址| 国产精品69久久久久| 国产丝袜一区视频在线观看| 日本欧美黄网站| 欧美一级视频一区二区| 久久99精品久久久久久青青91| 亚洲第五色综合网| 97视频人免费观看| 久久久久久久香蕉网| 深夜福利91大全| 成人免费视频在线观看超级碰| 日韩av电影在线免费播放| 欧美在线免费视频| 日韩精品在线观| 国产男女猛烈无遮挡91| 欧美日韩国产中字| 精品国内产的精品视频在线观看| 夜夜嗨av一区二区三区免费区| 午夜精品三级视频福利| 97视频在线观看视频免费视频| 日韩精品视频在线观看网址| 欧美激情精品久久久久久| 91精品国产91| 一区二区三区视频免费| 久久免费视频网站| 亚洲欧洲黄色网| 日韩精品在线免费观看视频| 成人精品在线视频| 亚洲美女激情视频| 欧美精品aaa| 国产精品a久久久久久| 久久久av电影| 日韩精品黄色网| 亚洲成人动漫在线播放| 伊人伊成久久人综合网小说| 国产精品久久久久影院日本| 亚洲欧美999| 国产成人精彩在线视频九色| 亚洲精品理论电影| 日韩av网站导航| 8050国产精品久久久久久| 亚洲国产小视频在线观看| 欧美国产亚洲精品久久久8v| 欧美极品美女电影一区| 国内精品一区二区三区| 亚洲成人av中文字幕| 欧美视频在线看| 久久精品国产成人精品| 亚洲欧洲国产一区| 欧美激情视频一区二区| 国内揄拍国内精品少妇国语| 国产精品免费在线免费| 亚洲成色777777女色窝| 亚洲精品成人久久久| 亚洲第一精品福利| 中文字幕久久久av一区| 在线播放日韩专区| 欧美另类交人妖| 92看片淫黄大片看国产片| 日韩黄在线观看| 91精品国产高清久久久久久91| 91香蕉亚洲精品| 国产亚洲精品日韩| 国产精品jvid在线观看蜜臀| 久久精品久久久久久国产 免费| 国产在线视频不卡| 亚洲国产精品999| 欧美怡春院一区二区三区| 亚洲国产精品国自产拍av秋霞| 欧美日韩一区二区在线播放| 97在线视频免费看| 欧美日韩亚洲一区二区三区| 日韩精品中文字幕有码专区| 亚洲黄在线观看| 91福利视频在线观看| 日韩欧美国产骚| 亚洲天堂av高清| 精品日韩中文字幕| 欧日韩不卡在线视频| 亚洲精品成人久久电影| 欧美日本啪啪无遮挡网站| 日韩在线一区二区三区免费视频| 在线成人免费网站| 日韩欧美在线视频观看| 一区二区福利视频| 亚洲免费小视频| 日韩精品在线播放| 欧美丰满老妇厨房牲生活| 国产成人精品电影| 精品美女久久久久久免费| 91国产精品视频在线| 日韩中文理论片| 国产色婷婷国产综合在线理论片a| 日本精品视频在线| 成年无码av片在线| 高潮白浆女日韩av免费看| 日韩中文字幕在线看| 成人精品视频99在线观看免费| 欧美在线观看网站| 亚洲人高潮女人毛茸茸| 国产成人精品久久| 国产一区视频在线播放| 欧美男插女视频| 久久久www成人免费精品| xxx欧美精品| 在线观看日韩视频| 欧美最顶级丰满的aⅴ艳星| 日韩中文字幕不卡视频| 国产精品久久久久久久久男| 亚洲精品久久7777777| 久久99视频免费| 国产91av在线| 成人444kkkk在线观看| 精品无码久久久久久国产| 欧美午夜精品久久久久久久| 欧美在线视频一区| 国产亚洲精品久久久| 热99在线视频| 日韩视频免费在线观看| 日韩成人av网址| 亚洲无限av看| 国产福利精品视频| 国产免费观看久久黄| 国产成人亚洲精品| 在线观看视频99| 亚洲va码欧洲m码| 亚洲精品福利免费在线观看| 7m第一福利500精品视频| 欧美激情亚洲一区| 久久久国产精品x99av| 国产精品黄页免费高清在线观看| 亚洲激情视频在线播放| 日韩电视剧在线观看免费网站| 国产97人人超碰caoprom| 日韩高清电影好看的电视剧电影| 亚洲精品福利视频| 国产精品中文字幕在线| 精品国产1区2区| 亚洲第一福利网| 亚洲色无码播放| 88xx成人精品| 欧美高跟鞋交xxxxxhd| 久久精品视频在线播放| 亚洲v日韩v综合v精品v| 国产精品欧美日韩久久| 欧美另类高清videos| 成人av在线亚洲| 成人两性免费视频| 国产日韩欧美影视| 欧洲成人在线视频| 91成人精品网站| 中文字幕欧美在线| 欧美日韩久久久久| 国产视频在线一区二区| 亚洲欧美一区二区精品久久久| 国产精品v日韩精品| 欧美精品中文字幕一区| 国产精品福利在线观看|