可能重复:
In C#, why can't an anonymous method contain a yield statement?
我有这段代码:
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 return(lazy things)?