yield 关键字

yield 关键字放在返回类型为 IEnumerableIEnumerable<T>IEnumeratorIEnumerator<T> 的方法中,告诉编译器生成返回类型(IEnumerableIEnumerator)的实现,当循环时,将方法运行到每个 yield “得到每个结果。

当你想要返回理论上无限的序列的下一个元素时,yield 关键字很有用,因此预先计算整个序列是不可能的,或者在返回之前计算完整的值序列会导致用户不希望的暂停。

yield break 也可以用于随时终止序列。

由于 yield 关键字需要迭代器接口类型作为返回类型,例如 IEnumerable<T>,因此不能在异步方法中使用它,因为这将返回 Task<IEnumerable<T>> 对象。

进一步阅读