亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

一般來說當(dāng)我們創(chuàng)建自定義集合的時(shí)候?yàn)榱俗屍淠苤С謋oreach遍歷,就只能讓其實(shí)現(xiàn)IEnumerable接口(可能還要實(shí)現(xiàn)IEnumerator接口)

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

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

實(shí)例代碼以及簡單注釋說明如下:

class Person
{
    public string Name;
    public void SayHi()
    {
      Console.WriteLine("Hello: {0}",this.Name);
    }
}
//非常簡單的自定義集合(- -簡單到增加,刪除,索引器等功能都沒有實(shí)現(xiàn)) 該類沒有實(shí)現(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 作用就是返回集合的一個(gè)元素,并移動到下一個(gè)元素上
      yield return item;
    }

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

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

相關(guān)文章

  • 一文詳解C#中重寫(override)及覆蓋(new)的區(qū)別

    一文詳解C#中重寫(override)及覆蓋(new)的區(qū)別

    這篇文章主要為大家詳細(xì)介紹了C#中重寫(override)及覆蓋(new)這兩個(gè)關(guān)鍵詞的區(qū)別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • C#中的DateTime是值類型還是引用類型

    C#中的DateTime是值類型還是引用類型

    近期遇到了DateTime到底是值類型還是引用類型的疑惑,順勢較深入地了解一下DateTime相關(guān)的內(nèi)容,大家有需要的朋友可以參考下
    2017-04-04
  • C#自定義RSA加密解密及RSA簽名和驗(yàn)證類實(shí)例

    C#自定義RSA加密解密及RSA簽名和驗(yàn)證類實(shí)例

    這篇文章主要介紹了C#自定義RSA加密解密及RSA簽名和驗(yàn)證類,實(shí)例分析了C#實(shí)現(xiàn)RSA加密解密及RSA簽名和驗(yàn)證的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • C++中const的實(shí)現(xiàn)細(xì)節(jié)介紹(C,C#同理)

    C++中const的實(shí)現(xiàn)細(xì)節(jié)介紹(C,C#同理)

    本篇文章主要是對C++中const的實(shí)現(xiàn)細(xì)節(jié)進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C# 添加Word文本和圖片超鏈接的方法

    C# 添加Word文本和圖片超鏈接的方法

    本文給大家介紹如何用C#編程語言對Word文檔中的文本和圖片進(jìn)行超鏈接設(shè)置。感興趣的朋友一起看看吧
    2017-10-10
  • C#?TaskScheduler任務(wù)調(diào)度器的實(shí)現(xiàn)

    C#?TaskScheduler任務(wù)調(diào)度器的實(shí)現(xiàn)

    本文主要介紹了C#?TaskScheduler任務(wù)調(diào)度器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-05-05
  • 淺談c#開發(fā)者應(yīng)該了解的15個(gè)特性

    淺談c#開發(fā)者應(yīng)該了解的15個(gè)特性

    本文列舉了15個(gè)值得了解的C#特性,旨在讓.NET開發(fā)人員更好的使用C#語言進(jìn)行開發(fā)工作。
    2021-05-05
  • C#實(shí)現(xiàn)飛行棋游戲

    C#實(shí)現(xiàn)飛行棋游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)飛行棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#沉淀之委托的深入講解

    C#沉淀之委托的深入講解

    如果要給方法傳遞一個(gè)方法參數(shù)時(shí),就可以使用委托。下面這篇文章主要給大家介紹了關(guān)于C#沉淀之委托的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • C#入門之定義類成員與接口實(shí)現(xiàn)

    C#入門之定義類成員與接口實(shí)現(xiàn)

    這篇文章介紹了C#入門之定義類成員與接口實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評論