并发或性能返回列表时yield收益的好处
我想知道使用yield return而不是返回列表是否存在任何并发(现在或将来)或性能优势。 请参阅以下示例
处理方法
void Page_Load() { foreach(var item in GetPostedItems()) Process(item); }
使用收益率回报
IEnumerable GetPostedItems() { yield return Item1.Text; yield return Item2.Text; yield return Item3.Text; }
返回一个清单
IEnumerable GetPostedItems() { var list = new List(); list.Add(Item1.Text); list.Add(Item2.Text); list.Add(Item3.Text); return list; }
在yield return
示例中,在IEnumerable.MoveNext
每次调用中计算结果,而在列表示例中,在返回IEnumerable
之前评估所有结果(请注意,可能不会为每个结果评估Text
属性,因为缓存和内联可以发生)。 因此,对于yield return
您应该在第一次调用枚举器时获得较小的性能增强,然后在评估属性时对IEnumerable.MoveNext
每次后续调用可能会IEnumerable.MoveNext
降低性能。
yield return
就是你可以返回无限序列,随机序列和各种其他新颖的枚举,这些枚举要么是效率极低,要么不能用于首先创建列表的模型。
简单地说,返回List
的实例要求在返回IEnumerable
之前评估列表中的所有元素,而使用yield return
允许按照IEnumerable
的使用者的要求计算每个元素。
上述就是C#学习教程:并发或性能返回列表时yield收益的好处分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1027874.html