当前位置: 移动技术网 > IT编程>开发语言>c# > C#使用yield关键字让自定义集合实现foreach遍历的方法

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

2019年07月18日  | 移动技术网IT编程  | 我要评论
foreach遍历是c#常见的功能,而本文通过实例形式展现了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();    
  }
}

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网