一.非含參委託
using System; namespace 委託 { //2 定義委託型別 委託和目標方法基本一致 public delegate void DelegateEat(); class Program {//1 應該有目標方法 public static void ZSEat() { Console.WriteLine("張三吃飯飯--->"); } public static void LSEat( ) { Console.WriteLine("李四吃飯飯--->"); } public static void Main(string[] args) { //3 申明委託變數 DelegateEat delegateEat; //4 賦值 delegateEat = ZSEat; delegateEat += LSEat; delegateEat += delegateEat; delegateEat -= LSEat; //5 執行委託 delegateEat(); } } }
結果:張三吃飯飯—>
李四吃飯飯--->
張三吃飯飯--->
二.含引數委託類
例一:目標函式中放一個引數
using System; namespace ConsoleApplication1 { public delegate void DelegateEat();//2 class Program { /// 第一個引數放置符合型別的方法!!! public static void ExcDelegateEat(DelegateEat de)//1 { Console.WriteLine("先執行"); de(); } public static void LSEat() { Console.WriteLine("趙六吃呵呵噠"); } public static void Main(string[] args) { ExcDelegateEat(LSEat); } } }
結果:先執行
趙六吃呵呵噠
例二:目標函式中放兩個引數
using System;namespace ConsoleApplication1 { public delegate void DelegateEat();//2 class Program { /// 第一個引數放置符合型別的方法!!! public static void ExcDelegateEat(DelegateEat de, string userName)//1 { Console.WriteLine("{0}在使用吃的功能", userName); de(); } public static void LSEat() { Console.WriteLine("趙六吃呵呵噠"); } public static void Main(string[] args) { ExcDelegateEat(LSEat, "李四"); } } }
結果:李四在使用吃的功能
趙六吃呵呵噠
例三:目標函式和委託型別均有兩個引數
1 using System; 2 namespace ConsoleApplication1 3 { 4 public delegate void DelegateEat(string x,string y);//2 5 class Program 6 { 7 public static void ExcDelegateEat(DelegateEat de, string userName)//1 8 { 9 string tr = "王五"; 10 string er = "洪七"; 11 Console.WriteLine("{0}在使用吃的功能", userName); 12 de(tr,er); 13 } 14 public static void LSEat(string m,string n) 15 { 16 Console.WriteLine("{0}吃呵呵噠",m); 17 Console.WriteLine("趙六吃呵呵噠"); 18 Console.WriteLine("{0}吃呵呵噠",n); 19 } 20 public static void Main(string[] args) 21 { 22 ExcDelegateEat(LSEat, "李四"); 23 Console.ReadKey(); 24 } 25 } 26 }
結果:李四在使用吃的功能
王五吃呵呵噠
趙六吃呵呵噠
洪七吃呵呵噠