.NET中的迭代器非常个性,它不是一次性的返回集合中的所有值,而是每次只返回一个,接着再返回下一个,一个接一个直到迭代结束。Linq中的查询语句依赖于延迟求值,它也并不是一次返回整个查询结果,而是和迭代一样一个一个的返回。下面的代码是查询一个数组并依次对数组中的每一个元素进行操作。

执行结果如图

从结果可以看出,查询并不是一次性的执行完毕,而是每传入一个值执行一次。反编译以上代码生成的EXE文件,整理后,类似于以下代码

上面的代码都是每请求一次,执行一次代码。假如想在请求之前就让查询对数组中的每个值都调用过一次Calculate方法。那么就需要调用ToList方法依次访问查询中的结构,并返回一个List<int>对象。修改foreach中的代码,如下

执行结果如下

转载于:https://www.cnblogs.com/qiuwuyu/archive/2011/08/01/2123362.html

Linq延迟求值现象相关推荐

  1. python中and和or的惰性求值特点_python中的惰性求值

    可能经常会有人问到python中的range和xrange有什么区别,你知道range是直接创建了一个列表,而xrange是创建了一个生成器,并且xrange非常适合当需要创建一个很大的列表的时候,因 ...

  2. 12 More Effective C++—条款16/17 (2/8原理与延缓求值)

    1 "2/8"原理 二八原理指一件事情的20%需要投入80%的精力来做,即要分清主次点.这种情况在程序编写的时候尤为突出.关键性能点.重要逻辑代码一般都是集中在小部分区域,而这部分 ...

  3. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

    python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...

  4. 函数求值需要运行所有线程_JavaScript函数式编程(二)

    纯函数就是,对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用,也不依赖外部环境的状态 但是实际的编程中,特别是前端的编程范畴里,"不依赖外部环境"这个条件是根本不可 ...

  5. python中and和or的惰性求值特点_Python中的惰性评估

    一个名为python pattern和Wikipedia的github存储库告诉我们什么是惰性评估. 将expr的评估延迟到需要其值为止,并避免重复评估. python3中的cached_proper ...

  6. 惰性求值——lodash源码解读

    前言 lodash受欢迎的一个原因,是其优异的计算性能.而其性能能有这么突出的表现,很大部分就来源于其使用的算法--惰性求值. 本文将讲述lodash源码中,惰性求值的原理和实现. 一.惰性求值的原理 ...

  7. C语言中短路求值问题

    短路现象(一) 以下表达式就是短路现象的其中一种 x & y & z; 如果x为假,直接返回假:若x为真,则执行y:只有x和y都为真才执行z. 例子 我们来看以下代码,求想x, y, ...

  8. python中关系运算符惰性求值,lazy.js 惰性求值实现分析

    背景:惰性求值? 来看一个 lazy.js 主页提供的示例: var people = getBigArrayOfPeople(); var results = _.chain(people) .pl ...

  9. java惰性计算原理_利用 Lambda 表达式实现 Java 中的惰性求值

    Java 中惰性求值的潜能,完全被忽视了(在语言层面上,它仅被用来实现 短路求值 ).更先进的语言,如 Scala,区分了传值调用与传名调用,或者引入了 lazy 这样的关键字. 尽管 Java 8 ...

最新文章

  1. python app模块_pythonWeb框架创建app模块以及虚拟环境管理工具
  2. sublime text3使用教程python_Sublime Text 编辑器配置 Python解释器简易教程
  3. linq php,C#开始使用 LINQ (上)
  4. C语言学习之用选择法对10个整数排序
  5. 大文件分片上传前端框架_基于Node.js的大文件分片上传
  6. JEECG Framework 3.3.1 beta版本发布第一天战报(文档下载量破1300、...
  7. P1314,jzoj3028-聪明的质监员【二分答案,前缀和】
  8. 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
  9. 后端怎么接收map_史上最全,C++后端开发面试题与知识点汇总
  10. android excel 筛选功能,Android 实现 Excel 解析 xls 和 xlsx,方法也可以很简单
  11. CS20SI-tensorflow for research笔记: Lecture3
  12. 拓端tecdat|R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
  13. 类的虚函数表和虚函数在内存中的位置
  14. 德普图拉在北京香山AI分论坛的主持词
  15. P and V
  16. Excel怎么将表格中的所有空白行删除
  17. PS 中图层为索引,修改成背景可编辑
  18. Boost库-功能介绍-Geometry-图形开发库-计算几何-常用功能封装-GraphicalDebugging(二)
  19. 4个基本不等式的公式高中_不等式链(高中4个基本不等式链推导)
  20. 2013年08月威海之旅

热门文章

  1. 我第一次接私活,就被骗了···
  2. 漫画:设计模式之 “工厂模式”
  3. 漫画:应用程序被拖慢?罪魁祸首竟然是Log4j!
  4. 给定一个字符串s,返回去掉子串mi后的字符串。
  5. FT报源检测到目标无法恢复解决过程
  6. Kubernetes的Service
  7. 使用消息来处理多线程程序中的一些问题
  8. RxJava/RxAndroid:timer(long delay, TimeUnit unit)
  9. TechParty Mini.0
  10. iOS开发之UIWebView