1

可能重复:
在 C# 中,为什么匿名方法不能包含 yield 语句?

我有这个代码:

Func<IEnumerable<int>> allNumbers = ()=> new []{1,2,3};
foreach (var number in allNumbers())
  Console.WriteLine(number);

但我想(并且有道理)做这样的事情:

int i = 0;
Func<IEnumerable<int>> allNumbers = () => {yield return ++i;};
foreach (var number in allNumbers())
   Console.WriteLine(number);

我得到这个编译错误:“yield 语句不能在匿名方法或 lambda 表达式中使用”

那么为什么我不能在 c# lambda 表达式中使用 yield 返回(懒惰的东西)?

4

0 回答 0