简单用法
yield 关键字用于定义一个函数,该函数返回 IEnumerable 或 IEnumerator(以及它们的派生泛型变体),当调用者迭代返回的集合时,其值会被懒惰地生成。在备注部分阅读有关目的的更多信息。
以下示例具有一个在 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
foreach 语句体的每次迭代都会创建对 Count 迭代器函数的调用。对迭代器函数的每次调用都会进行到 yield return 语句的下一次执行,这发生在 for 循环的下一次迭代期间。