Учитывая этот код:
IEnumerable<object> FilteredList()
{
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
yield return item;
}
}
Почему я не должен просто кодировать это так:
IEnumerable<object> FilteredList()
{
var list = new List<object>();
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
list.Add(item);
}
return list;
}
Я вроде понимаю, что yield
делает ключевое слово. Он сообщает компилятору, что нужно создать определенный тип вещей (итератор). Но зачем это использовать? Помимо того, что это немного меньше кода, что это делает для меня?
FullList.Where(IsItemInPartialList)
:)