C#使用yield关键字让自定义集合实现foreach遍历的方法
作者:shichen2014 时间:2022-07-21 11:44:28
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#,遍历
0
投稿
猜你喜欢
浅谈Java方法调用的优先级问题
2023-07-01 13:40:08
SpringMVC框架post提交数据库出现乱码解决方案
2022-03-01 09:50:41
关于jdk环境变量的配置方式解读
2023-04-22 14:53:05
Spring Boot+Drools规则引擎整合详解
2023-11-28 20:33:00
Java实现微信发红包
2021-07-22 05:11:07
Java详细讲解不同版本的接口语法和抽象类与接口的区别
2022-09-30 01:46:38
Mybatis关联查询结果集对象嵌套的具体使用
2021-07-12 22:09:18
Java Email邮件发送简单实现介绍
2023-10-07 01:05:11
Java实现五子棋游戏的完整代码
2022-07-01 15:32:34
Servlet3.0学习总结之基于Servlet3.0的文件上传实例
2023-09-02 01:51:33
Java基础学习之关键字和变量数据类型的那些事
2023-09-17 04:31:24
java设计模式之适配器模式
2021-08-28 09:08:09
Java实现接口的枚举类示例
2023-06-18 01:22:04
ShardingSphere jdbc实现分库分表核心概念详解
2023-11-24 12:09:45
JVM内存管理之JAVA语言的内存管理详解
2021-11-01 12:00:10
ReentrantLock源码详解--公平锁、非公平锁
2023-04-22 17:18:56
Java中对于双属性枚举的使用案例
2023-07-20 15:00:09
Java多线程编程之读写锁ReadWriteLock用法实例
2021-10-13 17:01:14
浅谈Java生命周期管理机制
2022-02-21 19:07:47
Spring Boot 读取静态资源文件的方法
2023-08-25 02:53:07