Dato questo codice:
IEnumerable<object> FilteredList()
{
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
yield return item;
}
}
Perché non dovrei semplicemente codificarlo in questo modo ?:
IEnumerable<object> FilteredList()
{
var list = new List<object>();
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
list.Add(item);
}
return list;
}
Ho capito cosa fa la yield
parola chiave. Indica al compilatore di creare un certo tipo di cose (un iteratore). Ma perché usarlo? A parte il fatto che è leggermente meno codice, cosa fa per me?
FullList.Where(IsItemInPartialList)
:)