关于c#:什么是产量,在asp .NET中使用yield有什么好处?

What is yield and what is the benefit to use yield in asp .NET?

你能帮我理解asp .NET(C#)中的yield关键字吗?


yield return自动为您创建枚举器。

http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx

所以你可以做一些像

1
2
3
4
5
6
//pseudo code:

while(get_next_record_from_database)
{
  yield return your_next_record;
}

它允许您快速创建一个对象集合(枚举器),您可以循环并检索记录。yield return语句处理为您创建枚举器所需的所有代码。

yield-return语句的主要部分是,在将集合返回到调用方法之前,不必加载集合中的所有项。它允许延迟加载集合,因此您不会一次性支付访问惩罚。

何时使用收益率返回。


产量远不止是合成糖或简单的创建IEnumerable的方法。

更多信息,我会查看JustinEtherage的博客,其中有一篇很好的文章解释了收益率的更高级用法。


我编写了一个简单的示例,演示如何在收集的访问周期中调用yield块。在这里看看。


yield用作语法糖,从方法返回IEnumerableIEnumerator对象,而不必实现您自己的类实现这些接口。


yield允许您在通常返回更具体类型(如IList)的情况下发出IEnumerable。

这是一个很好的例子,说明了它如何简化代码并阐明您的意图。至于在哪里使用它,在页面上需要迭代集合的任何地方,都可以潜在地使用返回IEnumerable而不是List/Dictionary/etc的方法。