我正试图从2010年迁移到Visual Studio 2015,并发现EventHandler声明有点不同。
在2010年,我可以输入以下内容…
this.MyNewEvent += (space)
,它会弹出"按TAB自动完成"。然后按tab键后,我将得到以下内容…
this.MyNewEvent += new EventHandler<MyNewEventArgs>(MyClassName_MyNewEvent);
void MyClassName_MyNewEvent(object sender, MyNewEventArgs e)
{
throw new NotImplementedException();
}
现在在2015年,当我输入下面的…
this.MyNewEvent += (space)
结果如下:
this.MyNewEvent += MyClassName_MyNewEvent;
private void MyClassName_MyNewEvent(object sender, MyNewEventArgs e)
{
throw new NotImplementedException();
}
如果这是新的方式,那就很奇怪了,因为我的很多旧代码都是按照2010年的方式呈现的。
为什么不再使用new EventHandler<>()
格式?有没有办法让它回到2010年的样子?
我一直等着迭戈来邀功,但似乎这不会发生。:)
正如问题的注释所述,两种不同的格式呈现相同的结果。没有理由改变它们的使用方式,但使用c#2.0格式是有意义的,因为它需要更少的字符,看起来更友好,并且消除了定义中的冗余。
文章如何:订阅和取消订阅事件(c#编程指南)展示了它们是如何相同的,只是在不同的框架/ide中呈现不同。
c# 1.0
this.MyNewEvent += new EventHandler<MyNewEventArgs>(MyClassName_MyNewEvent);
void MyClassName_MyNewEvent(object sender, MyNewEventArgs e)
{
throw new NotImplementedException();
}
c# 2.0
this.MyNewEvent += MyClassName_MyNewEvent;
private void MyClassName_MyNewEvent(object sender, MyNewEventArgs e)
{
throw new NotImplementedException();
}