С учетом этого кода:
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
. Он сообщает компилятору, что он создает определенную вещь (итератор). Но зачем это использовать? Помимо того, что это немного меньше кода, что он делает для меня?