1,概念:委托類型表示對具有特定參數列表和返回類型的方法的引用。 通過委托,可以將方法視為可分配給變量並可作為參數傳遞的實體。
委托是引用類型,可以把它看作是用來存方法的一種類型。比如說類型string用來定義存取字符串的變量,那么委托類型delegate就可以用來定義存方法的變量。委托和類一樣,是一種用戶自定義類型。但類表示的是數據和方法的集合,而委托表示的是一個或多個方法的集合。你可以把delegate看作一個包含有序方法列表的對象,這些方法具有相同的簽名和返回類型
2,聲明委托類型
委托類型不需要在類內部聲明,因為它是類型聲明
3,委托對象的創建和賦值
delegate void MyDel(string value); class Program { void Print1(string value) { Console.WriteLine("方法1:{0}", value); } void Print2(string value) { Console.WriteLine("方法2:{0}", value); } void Print3(string value) { Console.WriteLine("方法3:{0}", value); } /// <summary> /// 執行委托方法 /// </summary> /// <param name="d">委托類型參數</param> /// <param name="value">委托內方法的參數</param> void PrintFun(MyDel d, string value) { d(value); } static void Main(string[] args) { Program p = new Program(); MyDel del1, del2, del3;//聲明委托變量 //賦值 del1 = p.Print1; del2 = p.Print2; //組合委托 del3 = del1 + del2; //給委托賦新值 del1 = p.Print2; //給委托添加方法 del1 += p.Print3; //從委托移除方法 del1 -= p.Print2; p.PrintFun(del1, "已運行");//調用 Console.WriteLine("\n運行組合委托"); p.PrintFun(del3, "已運行"); Console.ReadKey(); } }