小编典典

为什么要使用 yield 关键字,而我只能使用普通的 IEnumerable?

all

鉴于此代码:

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关键字的作用。它告诉编译器构建某种东西(迭代器)。但为什么要使用它?除了代码稍微少一点之外,它对我有什么用?


阅读 105

收藏
2022-08-27

共1个答案

小编典典

使用yield会使集合变得 懒惰。

假设您只需要前五个项目。按照您的方式,我必须遍历 整个列表 才能获得前五个项目。使用yield,我只遍历前五个项目。

2022-08-27