Compte tenu de ce code:
IEnumerable<object> FilteredList()
{
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
yield return item;
}
}
Pourquoi ne devrais-je pas simplement le coder de cette façon?:
IEnumerable<object> FilteredList()
{
var list = new List<object>();
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
list.Add(item);
}
return list;
}
Je comprends en quelque sorte ce que fait le yield
mot-clé. Il dit au compilateur de construire un certain type de chose (un itérateur). Mais pourquoi l'utiliser? À part que ce soit un peu moins de code, qu'est-ce que ça fait pour moi?
FullList.Where(IsItemInPartialList)
:)