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(); }}
感興趣的讀者可以動手測試一下本文實例代碼,相信會有新的收獲。
|
新聞熱點
疑難解答