Chr*_*cia 101 c# performance events lambda
我目前有一个声明如下的页面:
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//snip
MyButton.Click += (o, i) =>
{
//snip
}
}
}
Run Code Online (Sandbox Code Playgroud)
我最近才从1.1迁移到.NET 3.5,所以我习惯在Page_Load之外编写事件处理程序.我的问题是; 在使用lambda方法时,我应该注意哪些性能缺陷或缺陷?我更喜欢它,因为它当然更简洁,但我不想牺牲性能来使用它.谢谢.
And*_*are 102
由于编译器会将lambda表达式转换为等效的委托,因此没有性能影响.Lambda表达式只不过是一种语言特性,编译器将其转换为您习惯使用的完全相同的代码.
编译器会将您拥有的代码转换为以下内容:
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//snip
MyButton.Click += new EventHandler(delegate (Object o, EventArgs a)
{
//snip
});
}
}
Run Code Online (Sandbox Code Playgroud)
Gab*_*abe 58
性能方面它与命名方法相同.当你执行以下操作时,最大的问题是:
MyButton.Click -= (o, i) =>
{
//snip
}
Run Code Online (Sandbox Code Playgroud)
它可能会尝试删除不同的lambda,将原来的lambda留在那里.所以经验教训是,除非你也希望能够删除处理程序,否则它很好.
小智 40
EventHandler handler = (s, e) => MessageBox.Show("Woho");
button.Click += handler;
button.Click -= handler;
Run Code Online (Sandbox Code Playgroud)