xxx.Click + = new EventHandler(yyy.function)vs xxx.Click + = yyy.function之间的区别

时间:2014-12-23 15:34:44

标签: .net events

在VS中,Designer使用第一个,但我看到第二个也有效。有什么区别?是否有任何令人信服的理由使用第一个,第二个什么时候会更好?

1 个答案:

答案 0 :(得分:3)

两个片段都会生成相同的代码。区别在于,在第一种情况下,您告诉编译器您要使用哪种委托类型(即EventHandler),而在第二种情况下,您让编译器从上下文中找出委托的类型,方法组语法。

没有更好的"或者"更糟糕"在这种特定情况下的语法,因为EventHandler委托不太可能被重命名。只要您保持一致,并在代码库中使用相同的语法。

但是,通常,第二种语法允许您在必须更改委托的名称时避免代码中的多处更改,而不更改其签名。由于编译器隐式地计算出类型,因此在将您的委托MyDelegate重命名为MyNewDelegate后,您不需要找到new MyDelegate(myMethod)所有位置并将其更改为new MyNewDelegate(myMethod)