加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用动态创建的控件重复Lambda代码吗?

发布时间:2020-12-16 02:03:10 所属栏目:百科 来源:网络整理
导读:今天我回答了 question,基本上是关于UI交互.但后来它让我想到了OP用他们的代码编写动态创建的控件的方式. 错过了.Net 2-4并且现在才学习’新’的东西,这实际上是让我在第一个地方问题的原因..: private void AddPieceButton_Click(object sender,EventArgs
今天我回答了 question,基本上是关于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);
}

在测试案例中,问题几乎不重要;但代码块可以很容易地获得更多,更大;在像Go这样的游戏中,最终会有数百个游戏作品.

虽然人们可能/可能并且应该质疑添加如此多控件的想法,但是询问思想仍然想要知道……:每个部分都有自己的代码块副本,因为我猜它已经或者它们在我们的世界中被考虑在内像正常事件一样的奇迹,只在运行时记忆中只活一次?

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读