What's 委托

delegate 是表示對(duì)具有特定參數(shù)列表和返回類(lèi)型的方法的引用的類(lèi)型。在實(shí)例化委托時(shí),你可以將其實(shí)例與任何具有兼容簽名和返回類(lèi)型的方法相關(guān)聯(lián)。你可以通過(guò)委托實(shí)例調(diào)用方法。委托用于將方法作為參數(shù)傳遞給其他方法。事件處理程序就是通過(guò)委托調(diào)用的方法。你可以創(chuàng)建一個(gè)自定義方法,當(dāng)發(fā)生特定事件時(shí),某個(gè)類(lèi)(如 Windows 控件)就可以調(diào)用你的方法。

下面的示例演示了一個(gè)委托聲明:

public delegate int Del(int x, int y);

可將任何可訪問(wèn)類(lèi)或結(jié)構(gòu)中與委托類(lèi)型匹配的任何方法分配給委托。該方法可以是靜態(tài)方法,也可以是實(shí)例方法。這樣便能通過(guò)編程方式來(lái)更改方法調(diào)用,還可以向現(xiàn)有類(lèi)中插入新代碼。

【備注】在方法重載的上下文中,方法的簽名不包括返回值。但在委托的上下文中,簽名包括返回值。換句話(huà)說(shuō),方法和委托必須具有相同的返回類(lèi)型。

將方法作為參數(shù)進(jìn)行引用的能力使委托成為定義回調(diào)方法的理想選擇。例如,對(duì)比較兩個(gè)對(duì)象的方法的引用可以作為參數(shù)傳遞到排序算法中。由于比較代碼在一個(gè)單獨(dú)的過(guò)程中,因此可通過(guò)更常見(jiàn)的方式編寫(xiě)排序算法。

 

委托的屬性概述