gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:10:07 26 4
gpt4 key购买 nike

今天我回答了一个question ,基本上是关于UI交互的。但后来它让我想到了 OP 用他们的代码处理动态创建的控件的方式。

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

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 都会在编译时转换为“正常”方法,因此不会重复 lambas 的实际代码。但是,每次运行此方法时,都会实例化引用该代码的新 EventHandler 委托(delegate)。

关于c# - Lambda 代码是否与动态创建的控件重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25592562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com