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

tmrMain.Elapsed += new ElapsedEventHandler(tmrMain_Tick);

tmrMain.Elapsed += tmrMain_Tick;

两者似乎工作完全相同。 当您键入后者时,C#只是假设您是指前者吗?

===============>>#1 票数:26 已采纳

我做了这个

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

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

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

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

===============>>#2 票数:4

过去(.NET 1.x天),长格式是唯一的方法。 在这两种情况下,您都将新建一个代理以指向Program_someEvent方法。

===============>>#3 票数:2

我认为没有任何区别。 当然,resharper表示第一行具有冗余代码。

===============>>#4 票数:2

有点题外话:

你可以实例化一个委托(new EventHandler(MethodName))以及(如适用)重用该实例。

===============>>#5 票数:0

不是new XYZEventHandler要求,直到C#2003,你被允许省略C#2005冗余代码?

===============>>#6 票数:-1

我认为真正说明问题的一种方法是查看为该代码生成的MSIL。倾向于进行良好的酸性测试。

我有滑稽的担忧,它可能以某种方式乱用GC ..似乎很奇怪会有,如果它从来不需要做这样的宣布新的委托类型的所有开销,你知道吗?

  ask by Blorgbeard translate from so

未解决问题?本站智能推荐:

2回复

.NET中的退订事件语法

这个问题已经在这里有了答案 : 在C#中附加两种不同的事件处理程序方式是否存在实际差异? (2个答案) 可能重复: 在C#中附加两种不同的事件处理程序方式是否存在实际差异? 我正在开发.
4回复

C#委托和事件的逻辑和语法问题

如我的代码所示,我正在尝试创建一个委托,该委托将指向StringBuff方法BuffString,该方法将创建一个StringBuilder,它将具有大量的设置,等等。 我的问题是,由于某种原因,无论是什么原因,我都无法将对我在Sprite类中创建的StringBuff类的引用传递给委托的
1回复

为什么我们要指定一个委托和一个事件,为什么不只在C#中使用一个事件呢?

为什么要在事件中指定委托,为什么不在C#中使用事件呢? 例如,我有以下代码: 为什么开发C#的人为什么不通过以下方式实现事件: 我的意思是没有代表。 我知道该事件在C#中的工作方式。 如果有的话,它将只调用所有订阅的委托,否则将等于null。 我也知道事件与代表之
2回复

C#应用程序中的事件语法与委托语法

我已经搜索the use of event syntax and its importance in c# code 。 所以我发现了这些优点: 无法直接分配事件(与委托语法一样,我们不承担删除所有先前订阅的风险。 没有外部用户可以发起活动 我编写此代码段是为了更了解
2回复

在C#中附加事件处理程序的两种不同方式是否存在实际差异?

在C#中,引擎盖之间有任何真正的区别(除语法之外): 和 ?
11回复

代表和事件之间有什么区别?

代表和事件之间有什么区别? 两者都不都包含对可以执行的功能的引用吗?
1回复

这两个事件声明之间有什么区别? [重复]

这个问题已经在这里有了答案: 代表和事件之间有什么区别? 11个答案 我上课有两个活动 我只是意识到ScanStarted之前没有关键字event 。 我输入错字的结果很有可能,尽管它仍然可以正常工作。 这两个事件之间有什么区别?
2回复

注册委托和注册事件的命名方法之间的区别

我想确认一些事情 - 当我将方法注册为事件的订阅者时,很长一段时间,如下所示: 如果我不想在事件被触发时继续调用它,我需要从事件的订阅中取消注册该方法,如下所示: 当我将代理注册为事件的订阅者时,如下所示: 无法从该方法的订户列表中取消注册该委托。 所以我假设这个注册的
2回复

私有EventHandler和私有事件EventHandler之间的区别?

基本上标题是什么。 这两者之间有什么区别(我目前正在使用第一个) 和 我有一个方法 doDownload方法会调用 到目前为止,它工作正常。 但我觉得我做的事情非常糟糕。
7回复

我不明白纯委托和事件字段之间的区别

代表:我明白了。 但是当我搬到活动时,很多事情我都不太了解。 我在网上读过书,MSDN和一些简单的例子,它们都有相同的结构。 例如,这是链接: 事件示例 我拿第一个例子,作者说这是关于C#事件最简单的例子。 这是他的代码: 你可以注意到line: public even