Dado este código:
IEnumerable<object> FilteredList()
{
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
yield return item;
}
}
¿Por qué no debería simplemente codificarlo de esta manera ?:
IEnumerable<object> FilteredList()
{
var list = new List<object>();
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
list.Add(item);
}
return list;
}
Entiendo lo que hace la yield
palabra clave. Le dice al compilador que construya cierto tipo de cosas (un iterador). ¿Pero por qué usarlo? Además de ser un poco menos de código, ¿qué hace por mí?
FullList.Where(IsItemInPartialList)
:)