Почему в C # анонимный метод не может содержать оператор yield?
Я подумал, что было бы неплохо сделать что-то вроде этого (с лямбда, делающей возврат доходности):
public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
IList<T> list = GetList<T>();
var fun = expression.Compile();
var items = () => {
foreach (var item in list)
if (fun.Invoke(item))
yield return item; // This is not allowed by C#
}
return items.ToList();
}
Однако я обнаружил, что не могу использовать yield в анонимном методе. Мне интересно, почему.приносить документы просто сказать, что это не разрешено.
Поскольку это было запрещено, я просто создал List и добавил в него элементы.