yield return 是一个用于简化迭代器(Iterator)实现的关键字组合。它的核心作用是让开发者能够以更简洁的方式定义一个按需生成序列的方法(生成器方法),而无需显式实现 IEnumerable 或 IEnumerator 接口。yield return 方法会在每次迭代时按需生成下一个值,而不是一次性生成所有结果。
核心概念
-
延迟执行(Lazy Evaluation)
使用yield return的方法会在每次迭代时按需生成下一个元素,而不是一次性生成所有元素并存储在内存中。这对处理大数据集或无限序列非常有用。 -
状态机(State Machine)
编译器会自动将yield return方法转换为一个状态机,记录当前执行的位置。每次调用MoveNext()(例如在foreach循环中)时,代码会从上一次yield return的位置继续执行。 -
返回值类型
yield return方法必须返回IEnumerable<T>或IEnumerator<T>



















