您能否帮我理解yield
中的asp .NET(C#)
关键字。
答案 0 :(得分:15)
收益率返回会自动为您创建一个枚举器。
http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx
所以你可以做点什么
//pseudo code:
while(get_next_record_from_database)
{
yield return your_next_record;
}
它允许您快速创建可以循环并检索记录的对象集合(枚举器)。 yield return语句处理为您创建枚举器所需的所有代码。
yield return语句的重要部分是,在将集合返回给调用方法之前,不必加载集合中的所有项。它允许lazy loading集合,因此您不会一次性支付访问权限。
何时使用Yield Return。
答案 1 :(得分:5)
产量远远超过语法糖或创建IEnumerables的简单方法。
有关更多信息,请查看Justin Etheridge的博客has a great article explaining more advanced usages of yield。
答案 2 :(得分:1)
yield
用作语法糖从方法返回IEnumerable<T>
或IEnumerator<T>
对象,而不必实现自己的实现这些接口的类。
答案 3 :(得分:1)
我写了一个简单的示例,展示了如何在集合的访问周期中调用yield块。请查看here。
答案 4 :(得分:0)
yield
允许你发出一个IEnumerable,你通常会返回一个更具体的类型(比如IList)。
This is a pretty good example of how it can simplify your code and clarify your intent。至于你在哪里使用它,你需要在一个集合上迭代你的页面上的任何地方,你可能会使用一个返回IEnumerable的方法来代替List / Dictionary /等。