使用yield return实现foreach
来源:互联网 发布:阿里云重新挂载数据盘 编辑:程序博客网 时间:2024/06/06 03:42
前一篇IEnumerable和IEnumerator的理解[原]介绍了这两个接口用来实现foreach
其实还可以用yield return
直接上代码和结果
一下为摘录的一部分,yield return对比前一篇
1。代码很简洁。其实这里多了一个yield return 语句,由于yield return 并不对应多余的il指令。所以编译器就会在编译的时候,生成一个实现Ienumator接口的类.并且自动维护该类的状态.比如movenext,
2. 使用yield return 很容易实现递归调用中的迭代器. 如果以上的问题,不使用yield return的话,可想而知.要么你先把所有的结果暂时放到一个对象集合中. 可是这样就以为着在迭代之前一定要计算号. 要么可能你的movenext 就相当的复杂了. .NET 编译生成的代码其实利用了state machine. 代码量也很大.
类似迭代的调用,比如二叉树遍历 用yield return 就很方便了.另外还有常说的pipeline模式也很方便了.
可是yield return 还是有一些缺陷.
比如如果GetFiles 有一个参数是ref 或者 out, 那这个state machine就很难去维护状态了. 事实上,yield return那是不支持方法带有ref或者out参数的情况.
- 使用yield return实现foreach
- foreach()中的yield的使用
- 关于yield return的使用
- nodejs koa forEach 不能使用 yield
- yield return
- yield return
- Yield Return
- yield return
- C#使用yield关键字让自定义集合实现foreach遍历的方法
- 了解 C# foreach 内部语句和使用 yield 实现的自定义迭代器
- 关于协程中yield return的一些使用
- yield return 及使用yield return复制文件夹并返回文件名
- yield break 与 yield return
- foreach,IEumerable,yield
- C#--- IEnumerable<T>和yield return的使用
- C#--- IEnumerable<T>和yield return的使用
- C#中的using和yield return混合使用
- 迭代器的工作流程,及yield return的使用
- 求字符串自动换行算法
- 一个简单、方便的JSP验证码实例
- MySql循环插入数据
- Excel宏不要弹出来
- 正则匹配替换示例
- 使用yield return实现foreach
- Javascript检测客户端分辨率,操作系统,浏览器,屏幕色彩信息
- IEnumerable和IEnumerator的理解[原]
- 扩展方法学习笔记[原]
- 很好用的QQ图片滑动效果[转]
- SqlServer数据类型列表
- 标志寄存器部分
- myeclipse的freemarker插件
- javascrpt:jquery的使用 关于 option ,append,attr,val()等的使用