本文共 841 字,大约阅读时间需要 2 分钟。
关键词:延迟、当前位置保留、IEnumerable
例:
static void Main(string[] args) { IEnumerable ie = funyield(); foreach (string s in ie) { Console.WriteLine(s); } Console.ReadKey(); } public static IEnumerable funyield() { yield return "ff"; yield return "DD"; yield return "bb"; }
1.延迟
当Main函数执行时,执行完IEnumerable ie=funyield();语句后,实际根本没有执行funyield方法,当之后对其进行迭代的时候才会去执行。 一旦我们在一个返回类型为IEnumerable或IEnumerable<T>的方式中通过yield return 返回集合元素,意味着这个方法中的操作会被”延后执行“---操作的真正执行不是发生在调用时候,而是延后到对返回的集合进行迭代的时候。2.保留位置
对上述代码 打断点,再执行时会发发现,foreach每次的迭代都要去执行funyield方法,并且一次执行返回的数据,第一次执行返回 ff ,保留位置,下次再迭代的时候就要从下一个开始,即执行返回 DD3.IEnumerable
在使用yield关键字的时候,返回类型必须是、、或MSDN:
本文转自武沛齐博客园博客,原文链接:http://www.cnblogs.com/wupeiqi/p/3145780.html,如需转载请自行联系原作者