考虑这个片段:
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
}
答案 0 :(得分:1)
实际上,它们并没有什么不同。 C#2.0中引入的第二种方法更简洁。
有关详细信息,请查看this MSDN article
答案 1 :(得分:1)
没有区别。从.NET 2.0 / VS2005开始,C#编译器添加了一个改进,它根据赋值的左侧自动推断出委托的类型,并隐式地将new PrintSomeText
调用添加到已编译的代码中。编译后,它们完全相同。