简单用法

yield 关键字用于定义一个函数,该函数返回 IEnumerableIEnumerator(以及它们的派生泛型变体),当调用者迭代返回的集合时,其值会被懒惰地生成。在备注部分阅读有关目的的更多信息。

以下示例具有一个在 for 循环内的 yield return 语句。

public static IEnumerable<int> Count(int start, int count)
{
    for (int i = 0; i <= count; i++)
    {
        yield return start + i;
    }
}

然后你可以调用它:

foreach (int value in Count(start: 4, count: 10))
{
    Console.WriteLine(value);
}

控制台输出

4
5
6
...
14

.NET 小提琴现场演示

foreach 语句体的每次迭代都会创建对 Count 迭代器函数的调用。对迭代器函数的每次调用都会进行到 yield return 语句的下一次执行,这发生在 for 循环的下一次迭代期间。