我有这个代码:
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 返回(懒惰的东西)?