软件编程
位置:首页>> 软件编程>> C#编程>> C#使用yield关键字让自定义集合实现foreach遍历的方法

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

作者:shichen2014  发布时间:2022-07-21 11:44:28 

标签:C#,遍历

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

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com