将方法分配给委托对象的两种方法之间的区别是什么

时间:2014-05-21 17:08:29

标签: c#

考虑这个片段:

public delegate void PrintSomeText(string);

在合法的地方,我们有以下方法:

public void ShowText(string s) { Console.WriteLine(s); }

ShowText方法分配给下面printObj的两种方式之间的区别是什么?

static void Main()
{
    PrintSomeText printObj;
    /* ... */
    printObj = new PrintSomeText(ShowText); // The first way
}

VS。 :

static void Main()
{
    PrintSomeText printObj;
    /* ... */
    printObj = ShowText; // The second way
}

2 个答案:

答案 0 :(得分:1)

实际上,它们并没有什么不同。 C#2.0中引入的第二种方法更简洁。

有关详细信息,请查看this MSDN article

答案 1 :(得分:1)

没有区别。从.NET 2.0 / VS2005开始,C#编译器添加了一个改进,它根据赋值的左侧自动推断出委托的类型,并隐式地将new PrintSomeText调用添加到已编译的代码中。编译后,它们完全相同。