当我计算列表中的下一个项目(甚至下一个项目组)时,我倾向于使用yield-return。
使用版本2之前,您必须具有完整的列表,然后才能返回。通过使用yield-return,您实际上只需要在退货之前就拥有下一项。
除其他外,这有助于在较长的时间范围内分散复杂计算的计算成本。例如,如果列表连接到GUI,并且用户从不进入最后一页,则您永远不会计算列表中的最终项目。
最好使用yield-
return的另一种情况是IEnumerable表示一个无限集。考虑素数列表或无限数量的随机数。您永远无法一次返回完整的IEnumerable,因此您可以使用yield-
return递增地返回列表。
在您的特定示例中,您拥有完整的产品列表,因此我将使用版本2。



