Есть ли когда-либо обстоятельства, когда следующее:
public IEnumerable<Foo> Foobar (Bar bar)
{
List<Foo> result = new List<Foo>()
foreach(var Qux in bar.QuxSource)
{
Foo item;
... //a procudure that is intricate enough not to be clearly repressentable with a LINQ method
result.Add(item);
... //The aforementioned inticate proceduce continues. Possiblily adding more items to result
}
return result;
}
Предпочтительнее:
public IEnumerable<Foo> Foobar (Bar bar)
{
foreach(var Qux in bar.QuxSource)
{
Foo item;
... //a procudure that is intricate enough not to be clearly repressentable with a LINQ method
yield return item;
... //The aforementioned inticate proceduce continues. Possiblily yielding more items
}
}
Я имею в виду, что последнее явно замечательно.Со славой побежденной операции, если я использую только Foobar (someBar) .irst (), он не должен генерировать все возвращаемые элементы.
Я вижу, что первое использовалось много, особенно опытными программистами.(Кто, я думаю, не обновляется со списками в современном C #).Так лучше ли бывшему патерну при некоторых обстоятельствах?(глядя только на библиотечный код, нацеленный на повторное использование) Я думаю, может быть, когда возможность создания элементов зависит от какого-то внешнего ресурса, такого как наличие открытого файла.Каков вариант использования foreach?Я думаю, это