博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
yield
阅读量:6476 次
发布时间:2019-06-23

本文共 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 ,保留位置,下次再迭代的时候就要从下一个开始,即执行返回 DD

3.IEnumerable

在使用yield关键字的时候,返回类型必须是或 

MSDN:

本文转自武沛齐博客园博客,原文链接:http://www.cnblogs.com/wupeiqi/p/3145780.html,如需转载请自行联系原作者

你可能感兴趣的文章
spring3.0.7中各个jar包的作用总结
查看>>
Windows 10 /win10 上使用GIT慢的问题,或者命令行反应慢的问题
查看>>
梯度下降(Gradient descent)
查看>>
Windows平台分布式架构实践 - 负载均衡
查看>>
iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变...
查看>>
SVN服务器使用(二)
查看>>
反射获取内部类以及调用内部类方法
查看>>
App里面如何正确显示用户头像
查看>>
U-BOOT之一:BootLoader 的概念与功能
查看>>
我的路上
查看>>
Velocity处理多余空白和多余空白行问题
查看>>
DB2与oracle有什么区别
查看>>
创建一个多级文件目录
查看>>
Picasa生成图片幻灯片页面图文教程
查看>>
js获取当前时间的前一天/后一天
查看>>
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
Security updates and resources
查看>>