拿下面的代码:
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默认为长版本,使代码混乱?这对我来说毫无意义.
我刚刚意识到我可以通过两种方式添加事件处理程序:
考虑像这样的事件处理程序:
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)
应该考虑这两种实现之间有什么区别吗?
这两者有什么区别?
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)
编辑:
如果没有差异,哪个是更好的选择?
谢谢!