码迷,mamicode.com
首页 > Windows程序 > 详细

C#使用yield关键字让自定义集合实现foreach遍历的方法

时间:2017-11-13 23:06:07      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:通过   idt   win   strong   otto   tor   ora   des   dev   

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();
  }
}

感兴趣的读者可以动手测试一下本文实例代码,相信会有新的收获。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#使用yield关键字让自定义集合实现foreach遍历的方法

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23657.html






相关内容

C#使用yield关键字让自定义集合实现foreach遍历的方法

标签:通过   idt   win   strong   otto   tor   ora   des   dev   

原文地址:http://www.cnblogs.com/paobuke/p/7828159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!