English 中文(简体)
C# 添加使用字句而不是使用新的关键词[复制]的活动手。
原标题:C# adding event handler using v.s. not using new keyword [duplicate]

In C#, what is the difference (if any) between these two lines of code?

tmrMain.Elapsed += new ElapsedEventH以及ler(tmrMain_Tick);

以及

tmrMain.Elapsed += tmrMain_Tick;

两者似乎完全相同。 页: 1 C# 只是假设你在什么时候把后者归类?

最佳回答

我这样做了。

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

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

And then ran ildasm over the code.
The generated MSIL was exactly the same.

So to answer your question, yes they are the same thing.
The compiler is just inferring that you want someEvent += new EventHandler( Program_someEvent );
-- You can see it creating the new EventHandler object in both cases in the MSIL

问题回答

It used to be (.NET 1.x days) that the long form was the only way to do it. In both cases you are newing up a delegate to point to the Program_someEvent method.

I don t think there s any difference. Certainly resharper says the first line has redundant code.

略微脱色:

You could instantiate a delegate (new EventHandler(MethodName)) and (if appropriate) reuse that instance.

是否需要在C#2003之前加入new XYZEventHandler,并且允许你在C#2005中删除多余的代码?

我认为,真正讲解的一个办法是看一下为法典编制的联塞综合办。 帐篷是一种良好的酸试验。

我担心,它可能在某种程度上与GC。 奇怪的是,如果永远不需要这样做,那么宣布新代表类别的所有间接费用都会发生吗?





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签