首页 > 代码库 > 使用yield关键字让自定义集合实现foreach遍历
使用yield关键字让自定义集合实现foreach遍历
一般来说当我们创建自定义集合的时候为了让其能支持foreach遍历,就只能让其实现IEnumerable接口(可能还要实现IEnumerator接口)
但是我们也可以通过使用yield关键字构建的迭代器方法来实现foreach的遍历,且自定义的集合不用实现IEnumerable接口
注:虽然不用实现IEnumerable接口 ,但是迭代器的方法必须命名为GetEnumerator() ,返回值也必须是IEnumerator类型
实例代码以及简单说明如下:
1 class Person 2 { 3 public string Name; 4 public void SayHi() 5 { 6 Console.WriteLine("Hello: {0}",this.Name); 7 } 8 } 9 //非常简单的自定义集合(- -简单到增加,删除,索引器等功能都没有实现) 该类没有实现IEnumerable接口10 class PersonList11 {12 Person[] pers =new Person[4];13 public PersonList()14 {15 pers[0] = new Person() { Name = "1" };16 pers[1] = new Person() { Name = "2" };17 pers[2] = new Person() { Name = "3" };18 pers[3] = new Person() { Name = "4" };19 20 }21 //简单的迭代器方法22 public IEnumerator GetEnumerator()23 {24 25 foreach (Person item in pers)26 {27 //yield return 作用就是返回集合的一个元素,并移动到下一个元素上28 yield return item;29 }30 31 }32 }33 class Program34 { 35 static void Main(string[] args)36 {37 PersonList list = new PersonList();38 foreach (Person item in list)39 {40 item.SayHi();41 }42 Console.ReadLine(); 43 }44 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。