最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用yield關(guān)鍵字讓自定義集合實現(xiàn)foreach遍歷的方法

 更新時間:2014年08月18日 11:35:37   投稿:shichen2014  
這篇文章主要介紹了C#使用yield關(guān)鍵字讓自定義集合實現(xiàn)foreach遍歷的方法,需要的朋友可以參考下

foreach遍歷是C#常見的功能,而本文通過實例形式展現(xiàn)了C#使用yield關(guān)鍵字讓自定義集合實現(xiàn)foreach遍歷的方法。具體步驟如下:

一般來說當(dāng)我們創(chuàng)建自定義集合的時候為了讓其能支持foreach遍歷,就只能讓其實現(xiàn)IEnumerable接口(可能還要實現(xiàn)IEnumerator接口)

但是我們也可以通過使用yield關(guān)鍵字構(gòu)建的迭代器方法來實現(xiàn)foreach的遍歷,且自定義的集合不用實現(xiàn)IEnumerable接口

注意:雖然不用實現(xiàn)IEnumerable接口 ,但是迭代器的方法必須命名為GetEnumerator(),返回值也必須是IEnumerator類型。

實例代碼以及簡單注釋說明如下:

class Person
{
    public string Name;
    public void SayHi()
    {
      Console.WriteLine("Hello: {0}",this.Name);
    }
}
//非常簡單的自定義集合(- -簡單到增加,刪除,索引器等功能都沒有實現(xiàn)) 該類沒有實現(xiàn)IEnumerable接口
class PersonList
{
  Person[] pers =new Person[4];
  public PersonList()
  {
    pers[0] = new Person() { Name = "1" };
    pers[1] = new Person() { Name = "2" };
    pers[2] = new Person() { Name = "3" };
    pers[3] = new Person() { Name = "4" };

  }
//簡單的迭代器方法
  public IEnumerator GetEnumerator()
  {
    foreach (Person item in pers)
    {
      //yield return 作用就是返回集合的一個元素,并移動到下一個元素上
      yield return item;
    }

  }
}
class Program
{  
  static void Main(string[] args)
  {
    PersonList list = new PersonList();
    foreach (Person item in list)
    {
      item.SayHi();
    }
    Console.ReadLine();    
  }
}

感興趣的讀者可以動手測試一下本文實例代碼,相信會有新的收獲。

相關(guān)文章

  • C# 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)

    C# 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)

    本文主要介紹了面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài),提供了簡單的示例供大家參考和理解。
    2016-03-03
  • C# 8.0新特性介紹

    C# 8.0新特性介紹

    C# 語言是在2000發(fā)布的,至今已正式發(fā)布了7個版本,每個版本都包含了許多令人興奮的新特性和功能更新。下面通過本文給大家分享下C# 8.0的三個令人興奮的新特性,需要的朋友參考下吧
    2017-10-10
  • C#和lua相互調(diào)用的方法教程

    C#和lua相互調(diào)用的方法教程

    lua是一種腳本語言,可以方便的移植到各種宿主語言中,并且可以支持熱更新,在游戲開發(fā)中也能當(dāng)做主要的語言來編寫游戲的邏輯,所以這篇文章主要給大家介紹了關(guān)于C#和lua相互調(diào)用的方法教程,需要的朋友可以參考下。
    2017-11-11
  • C#實現(xiàn)對AES加密和解密的方法

    C#實現(xiàn)對AES加密和解密的方法

    C#實現(xiàn)對AES加密和解密的方法,需要的朋友可以參考一下
    2013-04-04
  • 算法基礎(chǔ)之算法設(shè)計與分析

    算法基礎(chǔ)之算法設(shè)計與分析

    這篇文章主要介紹了算法基礎(chǔ)之算法設(shè)計與分析,貪心算法是一種解決優(yōu)化問題的算法設(shè)計方法,其核心思想是在每一步選擇當(dāng)前狀態(tài)下的最優(yōu)解,從而希望最終達(dá)到全局最優(yōu)解,需要的朋友可以參考下
    2023-10-10
  • 詳解C#實現(xiàn)在Excel單元格中應(yīng)用多種字體格式

    詳解C#實現(xiàn)在Excel單元格中應(yīng)用多種字體格式

    在Excel中,可對單元格中的字符串設(shè)置多種不同樣式。本文,將以C#及VB.NET代碼為例,介紹如何在Excel同一個單元格中應(yīng)用多種字體樣式,感興趣的可以了解一下
    2022-05-05
  • C#減少垃圾回收壓力的字符串操作詳解

    C#減少垃圾回收壓力的字符串操作詳解

    這篇文章給大家詳細(xì)分析了C#減少垃圾回收壓力的字符串操作的相關(guān)知識點,有興趣的朋友參考學(xué)習(xí)下吧。
    2018-03-03
  • C#更新SQLServer中TimeStamp字段(時間戳)的方法

    C#更新SQLServer中TimeStamp字段(時間戳)的方法

    這篇文章主要介紹了C#更新SQLServer中TimeStamp字段(時間戳)的方法,涉及C#操作數(shù)據(jù)庫字段的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • WPF實現(xiàn)類似360安全衛(wèi)士界面的程序源碼分享

    WPF實現(xiàn)類似360安全衛(wèi)士界面的程序源碼分享

    最近在網(wǎng)上看到了新版的360安全衛(wèi)士,感覺界面還不錯,于是用WPF制作了一個,時間有限,一些具體的控件沒有制作,用圖片代替了。感興趣的朋友一起跟著小編學(xué)習(xí)WPF實現(xiàn)類似360安全衛(wèi)士界面的程序源碼分享
    2015-09-09
  • C# winform實現(xiàn)右下角彈出窗口結(jié)果的方法

    C# winform實現(xiàn)右下角彈出窗口結(jié)果的方法

    這篇文章主要介紹了C# winform實現(xiàn)右下角彈出窗口結(jié)果的方法,結(jié)合實例形式分析了C#窗口操作的相關(guān)技巧,需要的朋友可以參考下
    2017-06-06

最新評論

九寨沟县| 无棣县| 利辛县| 阳原县| 达日县| 阳朔县| 门头沟区| 松原市| 寻乌县| 郑州市| 成武县| 开封县| 广安市| 玛沁县| 洛隆县| 乌什县| 襄垣县| 隆德县| 环江| 英吉沙县| 广南县| 孟连| 南部县| 康马县| 临沧市| 阜平县| 武邑县| 台南县| 延长县| 毕节市| 南丰县| 惠东县| 永春县| 文化| 长寿区| 嘉荫县| 时尚| 泌阳县| 高阳县| 江门市| 阿拉尔市|