时间:2021-05-20
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(); }}感兴趣的读者可以动手测试一下本文实例代码,相信会有新的收获。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#使用foreach语句遍历集合类型的方法。分享给大家供大家参考。具体如下:这里演示如何实现可与foreach语句一起使用的集合类usingSy
本文实例讲述了C#使用this关键字实现串联构造函数调用方法。分享给大家供大家参考。具体分析如下:在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数
前言用过c#的可能对yield关键字爱不释手,那么在像我这种被迫上java贼船的人,就想找到类似的功能。关于c#中的yield关键字大家可以参考这篇文章:我使用
本文实例讲述了php和C#的yield迭代器实现方法对比。分享给大家供大家参考,具体如下:yield关键字是用来方便实现迭代器的,免去了手工写迭代器的繁琐。迭代
c语言sum,它是自定义关键字,不属于C语言关键字,无固定含义。开发者可以自定义sum,一般用来表示求和变量。 C语言是一门面向过程的计算机编程语言,与C++