c# - 有和没有 "new"的接线事件之间的区别

标签 c# events syntax delegates

在 C# 中,这两行代码之间有什么区别(如果有的话)?

tmrMain.Elapsed += new ElapsedEventHandler(tmrMain_Tick);

tmrMain.Elapsed += tmrMain_Tick;

两者看起来完全一样。当您键入后者时,C# 是否只是假定您指的是前者?

最佳答案

这是我做的

static void Hook1()
{
    someEvent += new EventHandler( Program_someEvent );
}

static void Hook2()
{
    someEvent += Program_someEvent;
}

然后对代码运行 ildasm。
生成的 MSIL 完全相同。

所以回答你的问题,是的,它们是同一回事。
编译器只是推断你想要 someEvent += new EventHandler( Program_someEvent );
-- 您可以看到它在 MSIL 中的两种情况下都创建了新的 EventHandler 对象

关于c# - 有和没有 "new"的接线事件之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26877/

相关文章:

c# - 从 WPF ListView 读取数据。 C#

python - 从许多网页中获取数据的最佳方式(线程/事件驱动)

玛根托 : Add data to quote item object in an observer

c++ - while 循环条件中的这个语法是什么?

python - 整数文字是Python中的一个对象?

c# - 将 "Android.Views.ViewGroup"添加到 Xamarin XAML 页面

c# - 在静态字段中引用自身的类可以被垃圾收集吗?

ruby - Ruby 语法中 "#{}"标记的正式术语是什么?

c# - 使用 LINQ 获取一个 List<> 中不在另一个 List<> 中的项目

javascript - 如何在没有浏览器检测的情况下识别 "input"事件中的错误行为?