两者之间有什么区别?
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);
}
编辑:
如果没有差异,哪个是更好的选择?
谢谢!
答案 0 :(得分:6)
基本上,一个比另一个短。它只是同义糖。
“正确”语法是第一个,因为ProgresChanged是一个EventHandler事件,所以为了给它分配一个实际的处理程序,你需要创建一个新的EventHandler对象,其构造函数将一个参数作为一个参数。带有所需签名的方法。
但是,如果只指定方法的名称(第二种语法),则会隐式创建eventHandler类的实例,并将该实例分配给ProgressChanged事件。
我更喜欢使用第二种方法,因为它更短,并且不会丢失任何信息。没有太多的上下文可以将+= methodName
构造误认为是其他内容。
答案 1 :(得分:5)
没有区别。生成相同的ilcode。
至于哪一个更好:我使用第二个选项,因为它更清晰的代码=更容易阅读。
答案 2 :(得分:3)
没有区别。第二个将由编译器隐式转换为第一个。
答案 3 :(得分:0)
两者没有区别,它们是相同的。 事实上,后者只是一个捷径,它将像前者一样编译。
Riana