一.非含参委托
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 }
结果:李四在使用吃的功能
王五吃呵呵哒
赵六吃呵呵哒
洪七吃呵呵哒