为什么我不能在lambda表达式上使用yield return

时间:2012-09-21 16:42:39

标签: c# lambda yield-return

  

可能重复:
  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)?

0 个答案:

没有答案