[英]What is the difference between two ways of using delegates in C# (with new keyword and without)
我想知道有兩種在C#中使用委托的方式,帶有“ new”關鍵字,而沒有:
delegate void D(string value);
static void Main()
{
D d1 = new D(v => Console.WriteLine(v)); // 1
D d2 = v => Console.WriteLine(v); // 2
d1.Invoke("cat");
d2.Invoke("cat");
Console.ReadLine();
}
有什么區別嗎?
PS我注意到Visual Studio表單設計器使用“ new”關鍵字(用於事件)生成代碼,但是當我將其刪除(從生成的代碼中)時,它可以工作:
this.button1.Click += new System.EventHandler(this.button1_Click);
this.button1.Click += this.button1_Click;
有什么區別嗎?
不會。兩種形式都編譯為完全相同的IL。
PS我注意到Visual Studio表單設計器會生成帶有“ new”關鍵字的代碼(用於事件)
在舊版本的C#中,需要顯式實例化委托。 C#2添加了委托推斷 ,它允許您直接將方法組分配給委托(或與事件一起使用)。 設計人員仍然選擇原始形式,這是C#2.0之前所必需的,但仍然有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.