相关疑难解决方法(0)

C#:'+ = anEvent'和'+ = new EventHandler(anEvent)'之间的区别

拿下面的代码:

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]

显然,两者之间没有区别......前者只是后者的语法糖.

c# delegates event-handling

74
推荐指数
3
解决办法
1万
查看次数

+ = new EventHandler(Method)vs + = Method

可能重复:
C#:'+ = anEvent'和'+ = new EventHandler(anEvent)'之间的区别

订阅活动有两种基本方式:

SomeEvent += new EventHandler<ArgType> (MyHandlerMethod);
SomeEvent += MyHandlerMethod;
Run Code Online (Sandbox Code Playgroud)

有什么区别,什么时候我应该选择一个而不是另一个?

编辑:如果它是相同的,那么为什么VS默认为长版本,使代码混乱?这对我来说毫无意义.

c# events

73
推荐指数
4
解决办法
5万
查看次数

我应该实例化一个新的代表吗?

我刚刚意识到我可以通过两种方式添加事件处理程序:

考虑像这样的事件处理程序:

private void MyEventHandler()
{}
Run Code Online (Sandbox Code Playgroud)

方法1:实例化新的委托

MyObject.MyEvent += new Action(MyEventHandler);
Run Code Online (Sandbox Code Playgroud)

方法2:添加事件处理程序而不实例化新委托

MyObject.MyEvent += MyEventHandler;
Run Code Online (Sandbox Code Playgroud)

应该考虑这两种实现之间有什么区别吗?

.net c# delegates event-handling

6
推荐指数
1
解决办法
1318
查看次数

使用"new EventHandler <T>"并且不使用新的EventHandler <T>"的接线事件之间的区别?

这两者有什么区别?

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);
    }
Run Code Online (Sandbox Code Playgroud)

编辑:

如果没有差异,哪个是更好的选择?

谢谢!

c# events

6
推荐指数
2
解决办法
1182
查看次数

标签 统计

c# ×4

delegates ×2

event-handling ×2

events ×2

.net ×1