Почему я не могу использовать 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#?