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