Почему я не могу использовать yield return для лямбда-выражений

Возможный дубликат:
Почему в 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#?

0 ответов

Другие вопросы по тегам