什么是收益?什么是在asp.net中使用收益的好处?
收益率自动为您创建一个枚举器。
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。
yield
用作语法糖,用于从一个方法返回一个IEnumerable<T>
或IEnumerator<T>
对象,而无需实现您自己的实现这些接口的类。
yield
允许您发出一个IEnumerable,您通常会返回更具体的类型(如IList)。
This is a pretty good example of how it can simplify your code and clarify your intent。至于你在哪里使用它,你需要遍历一个集合的页面上的任何地方,你可能会使用一个返回IEnumerable来代替List/Dictionary /等的方法。
产量远远超过了合成糖或创建IEnumerables的简单方法。
欲了解更多信息,我会看看贾斯汀埃里奇的博客has a great article explaining more advanced usages of yield。
绝对如此。直到你完全理解它是如何为你创建状态机的,你才能完全理解“产出”。它非常强大。 – 2010-07-07 13:54:23
该死的帮助。我知道这是旧的,但这个帖子真的为我做了。 – Terrance 2010-08-12 14:37:32
??为什么downvotes?我错了吗? – spoulson 2010-07-07 13:48:39
是的,因为它不同于自己创建IEnumerable并返回它。 – 2010-07-07 13:50:09
这个答案没有错。 – 2010-07-07 13:53:05