给出以下代码:
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)
:)