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关键字自动完成

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




1903

被折叠的 条评论
为什么被折叠?



