abstract:帶有命名方法的委托與帶有匿名方法的委托 委托可以與命名方法關(guān)聯(lián)。 使用命名方法對委托進(jìn)行實(shí)例化時,該方法將作為參數(shù)傳遞,例如: class Program {
帶有命名方法的委托與帶有匿名方法的委托
委托可以與命名方法關(guān)聯(lián)。 使用命名方法對委托進(jìn)行實(shí)例化時,該方法將作為參數(shù)傳遞,例如:
class Program { //聲明一個委托 delegate void MyDel(string message); static void Main(string[] args) { //使用靜態(tài)方法作為參數(shù)實(shí)例化委托 MyDel del = Print; } //聲明一個方法 private static void Print(string message) { Console.WriteLine(message); } }
復(fù)制代碼
這被稱為使用命名的方法。 使用命名方法構(gòu)造的委托可以封裝靜態(tài)方法或?qū)嵗椒āT谠缙诎姹镜?C# 中,命名方法是對委托進(jìn)行實(shí)例化的唯一方式。 但是,在不希望付出創(chuàng)建新方法的系統(tǒng)開銷時,C# 使您可以對委托進(jìn)行實(shí)例化,并立即指定委托在被調(diào)用時將處理的代碼塊。 代碼塊可以包含 lambda 表達(dá)式或匿名方法。
【備注】①作為委托參數(shù)傳遞的方法必須與委托聲明具有相同的簽名。②委托實(shí)例可以封裝靜態(tài)或?qū)嵗椒?。③盡管委托可以使用 out 參數(shù),但建議您不要將其用于多路廣播事件委托,因?yàn)槟鸁o法知道哪個委托將被調(diào)用。
示例1:以下是聲明及使用委托的一個簡單示例。 注意,委托 MyDel 和關(guān)聯(lián)的方法 Print 具有相同的簽名(即便方法的參數(shù)名稱 m 和 n 的位置替換)
復(fù)制代碼
class Program { //聲明一個委托 delegate void MyDel(int n, int m); static void Main(string[] args) { //使用靜態(tài)方法 Print 作為參數(shù)實(shí)例化委托 MyDel del = Print; Console.WriteLine("準(zhǔn)備好了哦,要開始調(diào)用委托了哦!"); for (int i = 0; i < 10; i++) { Print(i, 1); } Console.Read(); } //聲明一個方法 private static void Print(int m, int n) { Console.Write(m - n + " "); } }