使用yield关键字让自定义集合实现foreach遍历_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 使用yield关键字让自定义集合实现foreach遍历

使用yield关键字让自定义集合实现foreach遍历

 2014/8/15 15:34:38  Codefaker  程序员俱乐部  我要评论(0)
  • 摘要:一般来说当我们创建自定义集合的时候为了让其能支持foreach遍历,就只能让其实现IEnumerable接口(可能还要实现IEnumerator接口)但是我们也可以通过使用yield关键字构建的迭代器方法来实现foreach的遍历,且自定义的集合不用实现IEnumerable接口注:虽然不用实现IEnumerable接口,但是迭代器的方法必须命名为GetEnumerator(),返回值也必须是IEnumerator类型实例代码以及简单说明如下:1classPerson2
  • 标签:for 实现 使用 遍历 自定义 关键字

       一般来说当我们创建自定义集合的时候为了让其能支持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 PersonList
11     {
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 Program
34     {       
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     }

 

  • 相关文章
发表评论
用户名: 匿名