yield 关键字
将 yield
关键字放在返回类型为 IEnumerable
,IEnumerable<T>
,IEnumerator
或 IEnumerator<T>
的方法中,告诉编译器生成返回类型(IEnumerable
或 IEnumerator
)的实现,当循环时,将方法运行到每个 yield
“得到每个结果。
当你想要返回理论上无限的序列的下一个元素时,yield
关键字很有用,因此预先计算整个序列是不可能的,或者在返回之前计算完整的值序列会导致用户不希望的暂停。
yield break
也可以用于随时终止序列。
由于 yield
关键字需要迭代器接口类型作为返回类型,例如 IEnumerable<T>
,因此不能在异步方法中使用它,因为这将返回 Task<IEnumerable<T>>
对象。