给定这段代码:
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
关键字的作用。它告诉编译器构建某种东西(迭代器)。但是为什么要用呢?除了稍微减少代码之外,它对我有什么用?
最佳答案
使用 yield
使集合变得惰性。
假设您只需要前五项。按照您的方式,我必须遍历整个列表 才能获得前五项。使用 yield
,我只循环遍历前五个项目。
关于c# - 为什么要使用 yield 关键字,而我只能使用普通的 IEnumerable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057788/