哪里最好在c#中使用yield return?

这个问题在这里已经有了答案:

  • 在C#中使用的yield关键字是什么? 16个答案

  • 是不是因为它为我节省了一行列表声明?

    不。当你使用yield你会得到延期执行。 这意味着您创建消费者消费项目时产生的项目。

    如果您将项目添加到列表中然后将其返回,那么您必须先创建所有项目,然后消费者才能使用它们中的任何项目。

    例如,假设消费者调用您的方法并使用for循环来消耗它,如下所示:

    foreach(var item in GetMyLovelyItems())
    {
       ...
    }
    

    如果GetMyLovelyItems返回一个列表,则所有项目将在GetMyLovelyItems方法返回并开始循环之前创建。

    另一方面,如果使用yield来返回项目,那么随着循环从一个迭代到下一个迭代,项目将被创建。


    它也可能与生成收益的代码的延迟/缓冲执行相结合


    适用于那些复杂的情况下,您无法使用数组,列表或Enumerable.*方法进行应用。 这个功能很少需要。

    最常见的使用模式是使用Enumerable.*方法无法表达某种循环中的项目。

    许多Enumerable方法都是用yield来实现的。

    延期执行不需要 yieldEnumerable被延迟。

    无论如何,你可以编写你自己的IEnumerable派生类。 这是产生序列最具表现力和最乏味的方式。

    链接地址: http://www.djcxy.com/p/9087.html

    上一篇: Where it is preferred to use yield return in c#?

    下一篇: Access VerticalScroll property of Panel in the Compact Framework