c# - 将 lambda 表达式用于事件处理程序

标签 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
        }
    }
}

我最近才从 1.1 迁移到 .NET 3.5,所以我习惯于在 Page_Load 之外编写事件处理程序。我的问题是;为此使用 lambda 方法时,我应该注意任何性能缺陷或陷阱吗?我更喜欢它,因为它肯定更简洁,但我不想牺牲性能来使用它。谢谢。

最佳答案

没有性能影响,因为编译器会将您的 lambda 表达式转换为等效的委托(delegate)。 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
        });
    }
}

关于c# - 将 lambda 表达式用于事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2465040/

相关文章:

c# - 本地化 ASP.NET Identity 错误消息

C# 货币转换器 : Reduce the amount of if statements

Java MouseClick 监听器不工作

c++ - 更好的折叠循环索引计算

android - 为什么我的按钮在第一次点击时不起作用?

javascript - mozilla 和 webkit 触摸事件有什么区别?

c# - 如何使用带有 Mongo C# 驱动程序 2.3 的 Mongodb.Driver.Linq 返回包含过滤子文档的文档?

c# - 在 .NET Core 1.0 中在运行时编译和运行代码

c# - 将 foreach 循环转换为 linq 代码

c# - Entity Framework 使用大量内存