哪里优先使用c#中的收益率?

时间:2016-06-04 11:36:54

标签: c#

我知道收益率是多少,但我无法理解为什么要使用它, 是因为它为我节省了一行列表声明吗?

它必须是更多的东西。

什么是最佳使用方式?

*我问过在哪里以及为什么要使用它,它的优点是什么,而不是它的优点。

3 个答案:

答案 0 :(得分:6)

  

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

没有。当您使用yield时,您将获得延期执行。这意味着您可以在消费者消费物品时创建要产生的物品。

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

例如,假设使用者调用您的方法并使用for循环来使用它:

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

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

另一方面,如果使用yield返回项目,则会在循环从一次迭代到下一次迭代时创建项目。

答案 1 :(得分:2)

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

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

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

延迟执行不需要

yield Enumerable也被推迟。

在任何情况下,您都可以编写自己的IEnumerable派生类。这是产生序列最具表现力和最繁琐的方式。

答案 2 :(得分:2)

它还可能与生成yield

的代码的延迟/延迟执行相结合
相关问题