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