这些活动注册有何不同?

时间:2015-04-28 09:15:45

标签: c#

我现在已经多次找到registring事件处理程序的两种方式。

有什么区别?

public delegate void SomeEventHandler();

public class SomeClass
{
    public event SomeEventHandler SomeEvent;
}

static void Main(string[] args)
{
    var sc1 = new SomeClass();
    sc1.SomeEvent += new SomeEventHandler(a_SomeEventHandler);

    var sc2 = new SomeClass();
    sc2.SomeEvent += a_SomeEventHandler;
}

3 个答案:

答案 0 :(得分:3)

简答:

没有区别。

说明:

在第一种情况下,我们明确地告诉EventHandler类型,而在第二种情况下,编译器推断出委托的类型。

如果您安装了Resharper,Visual Studio将在第一种情况下淡出sc1.SomeEvent += new SomeEventHandler(a_SomeEventHandler);“Redudant explicit delegate creation”

答案 1 :(得分:0)

第二个问题来自于程序员的编码效率。他们给出相同的编译结果。

编译器可以推断第二个作为第一个旧的(或我们可以说是明确的)样式,因为SomeEvent只能接受第一个的方式。

答案 2 :(得分:0)

第一种语法是C#第一版中唯一的语法。第二种更短的语法后来在语言中引入。

正如其他答案中所解释的那样,它的用途完全相同。没有任何区别。