在C#中,yield
关键字被设计来简化迭代器的实现。通过yield
可以逐个返回集合中的元素,而无需显式地构建一个完整的集合对象来存储所有元素。这种方法特别适用于按需生成数据序列的场景,比如读取大文件或生成无限序列。
以下是如何使用yield
关键字实现自定义迭代器的步骤和示例:
步骤
-
声明迭代器方法:
- 迭代器方法通常具有
IEnumerable<T>
或IEnumerable
的返回类型。 - 方法名可以是任意的,但它应该清晰地表明该方法是一个迭代器。
- 迭代器方法通常具有
-
在方法体内使用
yield return
:- 在方法体内,可以使用
yield return
语句来逐个返回元素。 - 每次调用迭代器的
MoveNext
方法时,控制流都会回到迭代器方法中,从上次离开的位置继续执行,直到遇到下一个yield return
语句或方法结束。
- 在方法体内,可以使用
-
(可选)使用
yield break
:yield break
语句可以立即终止迭代。它类似于普通方法中的return
语句,但用于迭代器方法。
示例
下面是一个使用yield
关键字实现自定义迭代器的简单示例ÿ