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ステートメントは、匿名メソッドまたはラムダ式内では使用できません」

では、なぜ c# ラムダ式内で yield リターン (怠惰なもの) を使用できないのでしょうか?

4

0 に答える 0