相关疑难解决方法(0)

C#中使用的yield关键字是什么?

在" 我如何仅公开IList的片段<>问题"中,其中一个答案包含以下代码段:

IEnumerable<object> FilteredList()
{
    foreach(object item in FullList)
    {
        if(IsItemInPartialList(item))
            yield return item;
    }
}
Run Code Online (Sandbox Code Playgroud)

yield关键字有什么作用?我已经看到它在几个地方被引用,另外一个问题,但我还没弄清楚它实际上做了什么.我习惯于在一个线程产生另一个线程的意义上考虑收益率,但这似乎并不重要.

c# yield

781
推荐指数
16
解决办法
30万
查看次数

为什么使用yield关键字,当我可以使用普通的IEnumerable时?

鉴于此代码:

IEnumerable<object> FilteredList()
{
    foreach( object item in FullList )
    {
        if( IsItemInPartialList( item ) )
            yield return item;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我不应该这样编码呢?:

IEnumerable<object> FilteredList()
{
    var list = new List<object>(); 
    foreach( object item in FullList )
    {
        if( IsItemInPartialList( item ) )
            list.Add(item);
    }
    return list;
}
Run Code Online (Sandbox Code Playgroud)

我理解yield关键字的作用.它告诉编译器构建某种东西(迭代器).但为什么要用呢?除了代码略少之外,它对我有什么影响?

c# yield

171
推荐指数
6
解决办法
9931
查看次数

什么是收益的现实应用?

我知道是什么yield,我看过几个例子,但我想不到现实生活中的应用,你用它来解决一些具体问题吗?

(理想情况下,某些其他问题无法解决的问题)

.net c# yield

13
推荐指数
2
解决办法
2302
查看次数

标签 统计

c# ×3

yield ×3

.net ×1