What's 委托
delegate 是表示對(duì)具有特定參數(shù)列表和返回類型的方法的引用的類型。在實(shí)例化委托時(shí),你可以將其實(shí)例與任何具有兼容簽名和返回類型的方法相關(guān)聯(lián)。你可以通過委托實(shí)例調(diào)用方法。委托用于將方法作為參數(shù)傳遞給其他方法。事件處理程序就是通過委托調(diào)用的方法。你可以創(chuàng)建一個(gè)自定義方法,當(dāng)發(fā)生特定事件時(shí),某個(gè)類(如 Windows 控件)就可以調(diào)用你的方法。
下面的示例演示了一個(gè)委托聲明:
public delegate int Del(int x, int y);
可將任何可訪問類或結(jié)構(gòu)中與委托類型匹配的任何方法分配給委托。該方法可以是靜態(tài)方法,也可以是實(shí)例方法。這樣便能通過編程方式來更改方法調(diào)用,還可以向現(xiàn)有類中插入新代碼。
【備注】在方法重載的上下文中,方法的簽名不包括返回值。但在委托的上下文中,簽名包括返回值。換句話說,方法和委托必須具有相同的返回類型。
將方法作為參數(shù)進(jìn)行引用的能力使委托成為定義回調(diào)方法的理想選擇。例如,對(duì)比較兩個(gè)對(duì)象的方法的引用可以作為參數(shù)傳遞到排序算法中。由于比較代碼在一個(gè)單獨(dú)的過程中,因此可通過更常見的方式編寫排序算法。