Biorąc pod uwagę ten kod:
IEnumerable<object> FilteredList()
{
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
yield return item;
}
}
Dlaczego nie miałbym tego po prostu zakodować w ten sposób ?:
IEnumerable<object> FilteredList()
{
var list = new List<object>();
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
list.Add(item);
}
return list;
}
W pewnym sensie rozumiem, co yield
robi słowo kluczowe. Mówi kompilatorowi, aby zbudował pewien rodzaj rzeczy (iterator). Ale po co go używać? Poza tym, że jest nieco mniej kodu, co to robi dla mnie?
FullList.Where(IsItemInPartialList)
:)