拿下面的代码:
private void anEvent(object sender, EventArgs e) {
//some code
}
Run Code Online (Sandbox Code Playgroud)
以下有什么区别?
[object].[event] += anEvent;
//and
[object].[event] += new EventHandler(anEvent);
Run Code Online (Sandbox Code Playgroud)
[UPDATE]
显然,两者之间没有区别......前者只是后者的语法糖.
订阅活动有两种基本方式:
SomeEvent += new EventHandler<ArgType> (MyHandlerMethod);
SomeEvent += MyHandlerMethod;
Run Code Online (Sandbox Code Playgroud)
有什么区别,什么时候我应该选择一个而不是另一个?
编辑:如果它是相同的,那么为什么VS默认为长版本,使代码混乱?这对我来说毫无意义.
在MSDN 事件教程中,通过示例演示了事件:
// Add "ListChanged" to the Changed event on "List":
List.Changed += new ChangedEventHandler(ListChanged);
...
// Detach the event and delete the list:
List.Changed -= new ChangedEventHandler(ListChanged);
Run Code Online (Sandbox Code Playgroud)
我在哪里一直提到代表.例:
ChangedEventHandler myChangedEvent = new ChangedEventHandler(ListChanged);
List.Changed += myChangedEvent;
...
List.Changed -= myChangedEvent;
Run Code Online (Sandbox Code Playgroud)
当我查看MSDN示例代码时," - = new"对我来说是错误的.为什么这个List会引用我刚刚创建的事件处理程序?
显然我必须以错误的方式思考问题?我是否可以获得指向如何 - =工作的技术解释的指针,看看 - =似乎没有使用它.
在C#中,这两行代码之间有什么区别(如果有的话)?
tmrMain.Elapsed += new ElapsedEventHandler(tmrMain_Tick);
Run Code Online (Sandbox Code Playgroud)
和
tmrMain.Elapsed += tmrMain_Tick;
Run Code Online (Sandbox Code Playgroud)
两者看起来完全相同.当你输入后者时,C#是否只是假设你是指前者?