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

分享

C# 入門(14) 枚舉器(enumerator)和迭代器(iterator)

 hqpek 2018-08-07

C#的枚舉器和迭代器

參考書籍: 《C#圖解教程》

  
  枚舉器一般用來foreach的,,而迭代器在Unity中常用來當(dāng)協(xié)程(Coroutine)用。


枚舉器

IEnumerator接口

  實(shí)現(xiàn)IEnumerator接口的類就可以foreach了,,當(dāng)然前提是實(shí)現(xiàn)對,。這個接口有三個函數(shù)成員,。
  

  • Current
    • 只讀,。
    • 返回object類型的引用。
    • 第一次的位置在-1,,所以算是溢出了,。
  • MoveNext
    • 把枚舉器位置指向下一項。
    • 返回bool,。判斷是否新的位置有效,。
    • 第一次用要在Current前。
  • Reset
    • 把位置重置到原始狀態(tài),。

foreach做的事跟下面這段代碼差不多,。

static void Main()
{
    int[] MyArray = {10,11,12,13};

    IEnumerator ie = MyArray.GetEnumerator();    //獲取枚舉器

    while(ie.MoveNext())                         //移到下一項
    {
        int i =(int) ie.Current;                 //獲取當(dāng)前項
        Console.WriteLine("{0}",i);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

IEnumerable接口

  只有一個成員,GetEnumerator方法,就是實(shí)現(xiàn)上面那個接口的類對象,。


應(yīng)該使用泛型枚舉接口

  因?yàn)榉欠盒偷膶?shí)現(xiàn)是不安全的,,它們返回object的引用,需要自己轉(zhuǎn)換成實(shí)際類型,。如上面的代碼int i = (int) ie.Current;,,是不安全的。而實(shí)現(xiàn)泛型的Current屬性,,就會返回實(shí)際類型的對象,。


迭代器

  • yield return語句指定了序列中返回的下一項。
  • yield break語句指定到序列中最尾端,,就是像真正的return一樣,。

常見迭代模式

常見迭代模式


迭代器實(shí)質(zhì)

迭代器實(shí)質(zhì)

狀態(tài) 解釋
Before 第一次迭代前
Running 搞事情
Suspended 等下一次迭代
After 賢者模式

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多