Lambda 代码是否与动态创建的控件重复?

2024-04-17

今天我回答了一个question https://stackoverflow.com/questions/25588702/move-control-either-horizontally-or-vertically-not-combination-of-both/25590312#25590312,主要是关于UI交互。但后来它让我思考 OP 使用代码处理动态创建的控件的方式。

错过了 .Net 2-4 并且现在才学习“新”东西,这实际上是让我首先进入这个问题的原因......:

private void AddPieceButton_Click(object sender, EventArgs e)
{
   somePieceControl newPiece = new somePieceControl ();
   //..
   newPiece.MouseDown += (sender2, evt) =>  { /* 1st block of code */ };
   newPiece.MouseUp   += (sender2, evt) =>  { /* 2nd block of code */ };
   newPiece.MouseMove += (sender2, evt) =>  { /* 3rd block of code */ }
   //..
   someContainer.Controls.Add(newPiece);
}

在测试用例中,这个问题并不重要;但代码块很容易变得更多、更大;同样在像围棋这样的游戏中,最终也会有数百个棋子。

虽然人们可能会/可以&应该质疑添加如此多控件的想法,但好奇的头脑仍然想知道……:每一块是否都会有这些代码块的自己的副本,就像我猜的那样,它们已经或是否在我们的奇迹世界中被分解出来了像正常事件一样并且在运行时内存中只存在一次?


每个 lambda 在编译时都会转换为“正常”方法,因此 lambda 的实际代码不会重复。但是,每次此方法运行时,都会实例化引用代码的新 EventHandler 委托。

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

Lambda 代码是否与动态创建的控件重复? 的相关文章

随机推荐

  • 提高聚簇索引 GUID 主键的性能

    我有一个包含大量行 10K 的表 它的主键是 GUID 主键是聚集的 该表的查询性能相当低 请提供建议以提高效率 GUID 上的聚集索引不是一个好的设计 GUID 的本质在于它是随机的 而聚集索引则通过键对记录进行物理排序 这两件事是完全矛
  • 如何在 vuejs 中使用 bootstrap 4 主题

    有多个 Bootstrap 4 主题可以让网站的样式和布局变得简单 其中一些要求您的资产文件夹以非常特定的方式布局 例如 https htmlstream com public preview stream ui kit docs html
  • 如何排除不想要的后代?

    我遇到的情况是元素包含n可点击的手柄和n可揭示的元素 div class revealer div class hotspot a class handle href A a div class reveal p Content A p d
  • 如何完全删除颠覆性插件

    我已经安装了 Subversive 并想切换到 Subclipse 插件 通过 关于 Eclipse gt 安装详细信息 gt 卸载 并安装 Subclipse 卸载 Subversive 后 首选项 gt 团队 中现在有两个可用的 SVN
  • Servlet异步处理请求

    当我探索 NodeJS 应用程序和 Java 应用程序如何处理请求时 我遇到了 Servlet 对请求的异步处理 根据我在不同地方读到的内容 请求将由 Servlet 容器中的 HTTP 线程接收和处理 如果发生阻塞操作 如 I O 则可以
  • 在 Windows 上安装 gsutil

    我对 python 比较陌生 所以如果这是一个愚蠢的问题 我深表歉意 我在 Windows 上安装 gsutil 时遇到问题 我按照这里的指示进行操作 https developers google com storage docs gsu
  • 使用传单和 R 在地图上计算、解码和绘制路线

    我有原始数据 其中包含地点的纬度和经度样本数据如下 编辑 输出 structure list Lat c 33 9409444 33 9335713 33 9333906 33 9297826 Lon c 18 5001774 18 503
  • 我可以在 VS Code 中扩展现有的着色器或语言吗

    我想要做的是创建一个扩展 HTML 支持的扩展 也就是说 它可以完成 HTML 支持所做的所有事情 甚至更多 其中包括以下内容 语法突出显示 着色器 智能感知 HTML 格式 艾米特片段 这些详细信息列在本页上VS Code 中的 HTML
  • XCode 6.0.1 Enterprise In House Distribution 未创建 ipa/plist

    升级到 XCode 6 0 1 后 In House Enterprise Distribution from Archive 现在会创建 pkg 文件 而不是 ipa plist 文件 这打破了我们的企业分配制度 我还没有找到任何有关此更
  • 递归地添加数字序列

    嘿 我想用一些递归来刷新我的想法 我想添加从 开始 到 结束 含 的所有数字 即如果开始是 1 结束是 5 那么答案就是 1 2 3 4 5 15 到目前为止我已经得到了这个 int calc int start int end if st
  • 如何将 TIMESTAMP 列插入 Redshift

    我在 Redshift 中创建了一个表 create table myTable dateTime TIMESTAMP NOT NULL 但是 当我尝试插入包含以下内容的记录时dateTime的 我收到一个错误stl load errors
  • CSS 三角形和盒子阴影

    我用 CSS 完成了下面的图像 正如您所看到的 三角形有一个间隙 可以将框阴影与工具提示分开 代码如下 Generated by less 2 5 1 margin 0 padding 0 box sizing border box Dem
  • “应用变换时出错。验证指定的变换路径是否有效”的根本原因是什么?

    我有 MSI 安装程序 我正在使用 PowerShell 脚本安装和卸载它 当我卸载它时 我在 Azure 上创建的 Windows 2008 2016 服务器上收到以下错误 应用变换时出错 验证指定的转换路径是否有效 如果我使用非 Azu
  • AppCompatSpinner 与 android.widget.Spinner 对于具有最低 SDK 版本 14 的应用程序

    我正在开发使用最低 SDK 版本 14 Ice cream Sandwich 的应用程序 目标版本是 Android Marshmallow 我是否需要使用 AppCompatSpinner 或者普通的微调器可以在具有所有材质外观和感觉的
  • 使用 Devise 在 Rails 中进行功能测试

    经过 3 年的拖延 今天是我开始测试我的 Rails 应用程序的日子 我的第一步是修复 Rails 3 beta4 应用程序中失败的测试 我最后 3 次失败的测试与 devise gem 及其authenticate user 有关 控制器
  • 使用 Retrofit 2 上传文件时出错

    我正在尝试使用以下命令将文件 图片 上传到服务器Retrofit 2 我正在关注tutorial https futurestud io blog retrofit 2 how to upload files to server乍一看似乎很
  • vim 中的切换功能

    基本上我想做的是 map e call ToggleEssayMode
  • Meteor - 自动发起客户端登录

    我有一个 Meteor 应用程序 我使用 nginx 和内部 SSO 服务进行身份验证 我能够成功地完成此操作 并在服务器 Meteor onConnection 方法上的 nginx 设置 http 标头中检索用户详细信息 此时 我不确定
  • 不从方法触发 UIButton 的事件处理程序

    我只需要以编程方式触发 UIButton 我看过很多帖子 例如http stackoverflow com questions 5625651 programmatically fire button click event btnLoca
  • Lambda 代码是否与动态创建的控件重复?

    今天我回答了一个question https stackoverflow com questions 25588702 move control either horizontally or vertically not combinati