Capturing iteration variables

2023-11-14

首先要理解Lambda表达式的延迟执行(Deferred execution)

An important feature of most query operators is that they execute not when
constructed, but when enumerated.

其次来理解捕获迭代变量

When you capture iteration variables in for and foreach statements, C# treats those
iteration variables as though they were declared outside the loop。

Action[] actions = new Action[3];
for (int i = 0; i < 3; i++)
     actions [i] = () => Console.Write (i);   // 用Lambda表达式来实例化Action委托。//这样的代码基本上就是一个Bug。
foreach (Action a in actions) a(); // 333。执行。

最后需要理解这样的外部变量的生命周期扩展到了相应的委托。

int seed = 0;
Func<int> natural = () => seed++;
Console.WriteLine (natural()); // 0
Console.WriteLine (natural()); // 1
Console.WriteLine (seed); // 2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Capturing iteration variables 的相关文章

  • ASP.NET MVC OutputCache 不适用于根 URI

    我正在学习 ASP NET MVC 并被一个问题困扰 在HomeController中 Index操作具有OutputCache属性 但它似乎不起作用 HandleError public class HomeController Cont
  • 使用 Stream API 在每个对象上调用方法的“好”方法

    是否可以在使用者中运行一个方法 就像方法引用一样 但在传递给使用者的对象上运行 Arrays stream log getHandlers forEach h gt h close 会是这样的 Arrays stream log getHa
  • 是否可以有效地计算 lambda 演算项?

    我最近用 lambda 演算编写了很多程序 我希望能够实时运行其中一些程序 然而 尽管趋势函数范式基于 lambda 演算和 B 约简规则 但我找不到一个不是玩具 不以效率为目的的评估器 函数式语言应该很快 但我所知道的那些语言实际上并不提
  • 如何将数据框列名称插入方程 R 中? [复制]

    这个问题在这里已经有答案了 我试图通过引用数据框列名称并将其插入方程而不是直接调用名称来使一段代码更加灵活 尽管我必须直接插入字段名称 但以下示例有效 require e1071 class c 0 25 0 34 0 55 field1
  • 正确使用Optional.ifPresent()

    我正在尝试理解ifPresent 的方法OptionalJava 8 中的 API 我有一个简单的逻辑 Optional
  • 类型 '' 不能用作泛型类型或方法中的类型参数 'T'

    我创建了这个通用方法 public IEnumerable
  • 如何在C++中构建复合for循环?

    是另一个fora 的计数器部分 第三部分 允许循环for环形 在我尝试优雅地编写代码来生成直角三角形 我写了这个 但它无法编译 include
  • LINQ 表达式树 Any() 位于Where() 内

    我正在尝试生成以下 LINQ 查询 Query the database for all AdAccountAlerts that haven t had notifications sent out Then get the entity
  • Python opencv排序轮廓[重复]

    这个问题在这里已经有答案了 我正在关注这个问题 如何从左到右 从上到下对轮廓进行排序 https stackoverflow com questions 38654302 how can i sort contours from left
  • g++ 变量名有长度限制吗?

    看标题 简短回答 No 长答案 是的 它必须足够小才能适合内存 但否则就不行 不是真的 如果有一个内置的限制 我不相信有 那么它太大了 你真的很难达到它 事实上 你让我很好奇 所以我创建了以下 Python 程序来生成代码 usr bin
  • 带层的 NodeJS Lambda - 如何防止打字稿在构建中包含层

    我正在用打字稿编写一个 NodeJs lambda 函数 它依赖于 Lambda 层才能工作 我在项目文件夹中创建了一个包含示例层的目录 然后使用 tsconfig 文件中的路径选项以便在本地测试它 然而 这工作得很好 当我构建代码来编译
  • HashSet 中的并行流不并行运行

    我有想要并行处理的元素集合 当我使用List 并行性有效 但是 当我使用Set 它不并行运行 我编写了一个代码示例来显示该问题 public static void main String args ParallelTest test ne
  • 在 Java 8 中,如何使用 lambda 将 Map 转换为另一个 Map

    我刚刚开始研究 Java 8 并尝试 lambda 我想我应该尝试重写我最近写的一个非常简单的东西 我需要将字符串到列的映射转换为另一个字符串到列的映射 其中新映射中的列是第一个映射中的列的防御副本 列有一个复制构造函数 到目前为止我最接近
  • PHP 如何保持下拉列表中选定的选项在提交时保持选中状态?

    I have
  • lambda 函数的代码覆盖率

    我有以下带有 lambda 函数的代码 obj method param gt code here 如何通过测试覆盖 lambda 函数中的代码 您可以使用反射 但这可能容易出错并且适得其反 我建议你调用使用 lambda 的方法
  • AWS Lambda 上的 Google-chrome

    是否可以在带有容器的 AWS Lambda 中使用 puppeteer 运行 Google chrome 而不是 Chromium 当我在浏览器中创建新页面时脚本卡住 const page await browser newPage 来自
  • 查看所有定义的变量

    我目前正在 python shell 中进行计算 我想要的是 Matlab 风格的列表 您可以在其中看到已定义的所有变量 这样我就知道我使用了哪些名称 它们的值等 有办法吗 我该怎么做 您可以使用一些东西 dir 将为您提供范围内变量的列表
  • 如何使用 lambda 表达式调试stream().map(...)?

    在我们的项目中 我们正在迁移到 java 8 并且正在测试它的新功能 在我的项目中 我使用 Guava 谓词和函数来过滤和转换一些集合Collections2 transform and Collections2 filter 在这次迁移中
  • 通过 Assets Pipeline 携带 Sass 变量,Rails 3.1 rc1

    我最近将我的 Rails 3 0 项目之一与 3 1 rc1 进行了分支 以尝试新的资产管道 在使用 3 1 之前 我一直在项目中使用 Sass 因此我在单独的配置文件中设置了一些变量和函数 并让所有其他 sass 文件在第一行导入该文件
  • 为什么要在注释中声明 PHP 变量类型?

    我对 PHP 还很陌生 我刚刚开始使用 NetBeans 来开发我的 PHP 代码 出乎意料的是 当我在查询中输入变量时 会弹出一个对话框 要求我完成注释以保存变量类型 我做了一些调查 发现这似乎是 NetBeans 的一个流行功能 但我找

随机推荐

  • [前端系列第6弹]Ajax简明教程:轻松实现Web页面的异步交互

    在这篇文章中 我将介绍Ajax的基本概念 原理 优缺点 实现方法和应用场景 以及如何使用它来实现Web页面的异步交互 还将给一些简单而实用的例子 让你可以跟着我一步一步地编写自己的Ajax代码 目录 一 什么是Ajax 二 如何使用Ajax
  • gdb调试多进程程序和多线程程序

    gdb调试多进程程序和多线程程序 平时一般用gdb直接调试短小的程序 好像我还没调试过多进程和多线程程序呢 1 gdb调试多进程程序 如果一个进程通过fork系统调用创建了子进程 gdb会继续调试原来的进程 子进程则正常运行 常用的有两种方
  • win10设置任务栏双屏不同位置(方向)

    在所有显示器上显示任务栏开 任务栏在屏幕的位置 底部 在所有显示器上显示任务栏 任务栏在屏幕的位置靠右 在所有显示开 win10双屏设置任务栏位置方向 哔哩哔哩 bilibili
  • 重定义;多次初始化(C++报错)

    C 中报错 b 重定义 多次初始化 如图 将a b c前面的int数据类型去掉即可
  • SpringMvc,全面讲解@RequestParam注解的用法和原理

    本文要讲的 RequestParam注解大家在开发中应该会经常的用到 但是它的某些用法我感觉你不一定都知道 所以这篇文章就讲解一下带大家拨开云雾全面了解这个注解 使大家在开发中使用到这个注解的时候不再一知半解 先看一下 RequestPar
  • 生活服务是未来十年最大的商业机会?

    编者按 本文来自有邻的投稿 内容来自有邻创始人杨仁斌周末在杭州一个 O2O 活动上的分享 文章主要是杨仁斌对于 O2O 和生活服务的一些观点分享 最后一个部分中介绍了他们自己家的 有邻 提及的数据等资料 36 氪不作背书 我的第一个观点是
  • OpenWrt系统配置UCI

    UCI简介 UCI Unified Configuration Interface 是 Openwrt 中的统一配置接口 官方文档参考 每一个程序的配置文件都保存在 etc config 目录 可以通过文本编辑器 uci 一个可执行程序 以
  • 2022年社区工作人员社区专职工作者考试精选套卷及答案

    题库来源 优题宝公众号 2022年社区工作人员社区专职工作者考试精选套卷及答案 根据最新社区工作人员社区专职工作者考试大纲与历年社区工作人员社区专职工作者考试真题汇总编写 包含社区工作人员社区专职工作者考试常考重点题型与知识点 有助于考生复
  • Metal 系列教程

    这系列文章 目前发布在我的小专栏 iOS 图像处理 上 欢迎订阅 从 2014 年 Apple 正式推出 Metal 到现在 这个 Metal 系列教程 酝酿了很久 却迟迟没有进展 直到 WWDC 2018 Apple 宣布 iOS 12
  • 社工库网址与制作方法

    将互联网泄露的信息汇聚成数据库 简单说 黑客数据库 中国执行信息公开网 http zxgk court gov cn dt dapp 1 全国标准信息公共服务平台 http std samr gov cn 征信中心 https ipcrs
  • arm启动redis报错

    报错如下 WARNING you have Transparent Huge Pages THP support enabled in your kernel This will create latency and memory usag
  • 从BOM,DOM和ECMAScript来看JavaScript

    一个老套的问题 JavaScript是由什么组成的 答 1 ECMAScript 核心 描述JS的语法和基本对象 2 文档对象模型 DOM 处理网页内容的方法和接口 3 浏览器对象模型 BOM 与浏览器交互的方法和接口 ECMAScript
  • adb logcat命令查看并过滤android输出log

    http blog csdn net hansel article details 38088583 cmd命令行中使用adb logcat命令查看Android系统和应用的log dos窗口按ctrl c中断输出log记录 logcat日
  • mysql之服务的停止和开启,登录和退出01

    1 服务的停止和开启 登录和退出 1 mysql服务的停止和开启 net stop 服务名 例如net stop MYSQL56 服务名字通过右击电脑 管理 服务和应用程序 服务获取 net start 服务名 2 MYSQL服务的登录和退
  • 抖音私信卡片私信名片的原理分析

    抖音私信卡片 解决了客户封号严重 引流效率低的痛点 所以从去年到现在 依然是热销品 抖音快手私信名片链接跳转 是2022年抖音快手引流最新技术 可以生成卡片链接 支持标题 描述 logo以及跳转落地页的完全自定义配置 支持微信公众号和微信号
  • JS对象类型的确定

    http liaofeng xiao iteye com blog 697029 JS是松散类型的语言 这一点JS的对象表现得尤为突出 那么如何来确定JS对象的具体类型呢 首先 我们可以使用typeof运算符确定其基本类型 number o
  • PHPWord 实现合并多个word文件(完结)

    PHPWord 本来想着当调包侠呢 结果翻了一遍文档 没有这种操作支持 阿这 GPT 不出意外的一顿胡扯 给 气的要中风啦 思路 word 也就是docx结尾的文件本质上就是xml字符串 两个word文件合并其实就是把两个字符串拼接起来 你
  • 一文带你理解URI 和 URL 有什么区别?

    当我们打开浏览器 要访问一个网站或者一个ftp服务器的时候 一定要输入一串字符串 比如 https blog csdn net 或者 ftp 192 168 0 111 这样我们就可以得到一个html格式的页面或者一个文件 那么这个地址是什
  • YOLO论文思路简析

    YOLO You Only Look Once Unified Real Time Object Detection 是一种2016年提出的用于视觉检测的算法 与之前的算不同 YOLO改变了检测的过程将检测转化为了一个回归问题 输出目标的b
  • Capturing iteration variables

    首先要理解Lambda表达式的延迟执行 Deferred execution An important feature of most query operators is that they execute not when constr