c# - 使用 "new EventHandler<T>"和不使用 new EventHandler<T> 的接线事件之间的区别?

标签 c# events

两者有什么区别?

object.ProgressChanged += new EventHandler<ProgressChangedEventArgs>(object_ProgressChanged)

object.ProgressChanged += object_ProgressChanged;

    void installableObject_InstallProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        EventHandler<ProgressChangedEventArgs> progress = ProgressChanged;
        if (installing != null)
            installing(this, e);
    }

编辑:

如果没有区别,哪个是更好的选择?

谢谢!

最佳答案

基本上,一个比另一个短。这只是句法糖。

“正确”的语法是第一个,因为 ProgresChanged 是一个 EventHandler 事件,所以要为它分配一个实际的处理程序,您需要创建一个新的 EventHandler 对象,其构造函数将一个事件的名称作为参数具有所需签名的方法。

但是,如果您只指定方法的名称(第二种语法),则会隐式创建 eventHandler 类的实例,并将该实例分配给 ProgressChanged 事件。

我更喜欢使用第二种方法,因为它更短,而且不会丢失任何信息。没有多少上下文可以让您将 += methodName 结构误认为是其他东西。

关于c# - 使用 "new EventHandler<T>"和不使用 new EventHandler<T> 的接线事件之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468868/

相关文章:

几分钟后 MySQL 更新列

c++ - 如何自动化鼠标操作

javascript - 如何获取附加到 AJAX 请求的事件的元信息?

C#.NET Excel 和 OLEDB 连接字符串

c# - 使 WinForms UserControl 出现在 WPF Visual C# 项目的工具箱中?

c# - 如何计算有多少听众被吸引到一个事件?

c# - 控制点击事件点击框

c# - 在 Controller 中调用方法

javascript - 如何解决 ASP.NET 使用子目录时的相对 url 问题?

c# - Json 反序列化错误。不支持的 : System. Guid 类型