推荐答案
public IEnumerable<int> GenerateNumbers(int max)
{
for (int i = 0; i < max; i++)
{
yield return i;
}
}本题详细解读
1. yield 关键字的作用
yield 关键字用于在迭代器方法中逐个返回元素,而不需要一次性生成所有元素。它允许你在方法中暂停执行,并在需要时继续执行。yield return 用于返回一个元素,而 yield break 用于终止迭代。
2. 迭代器方法
迭代器方法是一种返回 IEnumerable 或 IEnumerator 的方法。使用 yield 关键字的迭代器方法会在每次调用 MoveNext 时执行到下一个 yield return 语句,并返回相应的值。
3. 示例代码解析
public IEnumerable<int> GenerateNumbers(int max)
{
for (int i = 0; i < max; i++)
{
yield return i;
}
}GenerateNumbers方法是一个迭代器方法,返回IEnumerable<int>。- 在
for循环中,每次迭代都会执行yield return i,返回当前的i值。 - 调用
GenerateNumbers方法时,并不会立即执行整个循环,而是在每次迭代时返回一个值。
4. 使用示例
foreach (var number in GenerateNumbers(5))
{
Console.WriteLine(number);
}- 上述代码会输出
0到4,每次迭代时GenerateNumbers方法会返回下一个值。
5. 注意事项
yield关键字只能在返回IEnumerable或IEnumerator的方法中使用。- 迭代器方法的状态会在每次
yield return时保存,并在下次调用时恢复。 yield break可以用于提前终止迭代。