私はこのコードを持っています:
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ステートメントは、匿名メソッドまたはラムダ式内では使用できません」
では、なぜ c# ラムダ式内で yield リターン (怠惰なもの) を使用できないのでしょうか?