程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#應用yield症結字讓自界說聚集完成foreach遍歷的辦法

C#應用yield症結字讓自界說聚集完成foreach遍歷的辦法

編輯:C#入門知識

C#應用yield症結字讓自界說聚集完成foreach遍歷的辦法。本站提示廣大學習愛好者:(C#應用yield症結字讓自界說聚集完成foreach遍歷的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#應用yield症結字讓自界說聚集完成foreach遍歷的辦法正文


foreach遍歷是C#罕見的功效,而本文經由過程實例情勢展示了C#應用yield症結字讓自界說聚集完成foreach遍歷的辦法。詳細步調以下:

普通來講當我們創立自界說聚集的時刻為了讓其能支撐foreach遍歷,就只能讓其完成IEnumerable接口(能夠還要完成IEnumerator接口)

然則我們也能夠經由過程應用yield症結字構建的迭代器辦法來完成foreach的遍歷,且自界說的聚集不消完成IEnumerable接口

留意:固然不消完成IEnumerable接口 ,然則迭代器的辦法必需定名為GetEnumerator(),前往值也必需是IEnumerator類型。

實例代碼和簡略正文解釋以下:

class Person
{
    public string Name;
    public void SayHi()
    {
      Console.WriteLine("Hello: {0}",this.Name);
    }
}
//異常簡略的自界說聚集(- -簡略到增長,刪除,索引器等功效都沒有完成) 該類沒有完成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();    
  }
}

感興致的讀者可以著手測試一下本文實例代碼,信任會有新的收成。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved