2.1 迭代器

1.IEnumerable和IEnumerator

2.foreach

3.yield


1.IEnumerable和IEnumerator

a.IEnumerable表示一个类可以被foreach遍历

b.IEnumerator表示"遍历的工具", 真正来遍历集合的元素

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


2.foreach

当编译器看到foreach (string fruit in myCollection), 它实际上会生成类似这样的代码

在这里插入图片描述


3.yield

a.yield关键字用于构建迭代器方法, 它有两个指令:

- yield return: 返回序列中的下一个元素, 并保留当前方法的状态, 以便下次从该状态继续执行

- yield break: 终止迭代, 表示序列结束

b.yield的工作原理

当编译器遇到包含yield的方法时, 它会自动生成一个实现了IEnumerable和IEnumerator接口的状态机类; 这个状态机类负

责保存当前执行的状态(如局部变量、当前执行到的位置等), 并在每次调用MoveNext时从上次暂停的地方继续执行

编译器通过yield关键字自动完成

在这里插入图片描述

编译器会生成一个状态机类

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值