今天突然想到对委托的理解大致都忘了 就从新温习了一下 希望能帮到大家
首先看一下MSDN对委托的解释:
委托是一种定义方法签名的类型。 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联。 您可以通过委托实例调用方法。
什么是委托
首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。
如何使用委托
在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。
下面是我对于委托的理解代码
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace 委托的应用 7 { 8 public delegate void wenhou(string name);//定义一个委托 wenhou 9 class Program 10 { 11 private static void Englishwenhou(string name)//定义一个英文的问候 输出goodmorning + 名字 12 { 13 Console.WriteLine("GoodMorning{0}", name); 14 } 15 private static void Chineswenhou(string name)//定义一个中文的问候 输出 早上好 +名字 16 { 17 Console.WriteLine("早上好{0}", name); 18 } 19 20 private static void delegatewenhou(string name, wenhou wh)//定义一个委托wenhou类型的变量 ,这个委托会根据方法名字的来调用方法 并且把参数传入相应的方法 21 { 22 wh(name); 23 } 24 static void Main(string[] args) 25 { 26 /* 第一种使用委托的方法(此方法就是通过参数的形式来给委托传值) 27 28 29 delegatewenhou("曹俊", Englishwenhou); //设置为中文问候的委托 30 31 Console.WriteLine("---------------------------------\n"); 32 33 delegatewenhou("jun.cao", Chineswenhou); //设置为英文问候的委托 34 35 Console.ReadKey(); //获取输入的按键 -- 再次用于不立即关闭调试窗口 36 */ 37 38 /* 39 输入: 40 GoodMorning jun.cao 41 --------------------------------- 42 43 早上好曹俊 44 */ 45 46 //第二种使用委托的方法(直接给委托传值) 47 48 49 50 wenhou wh = new wenhou(Englishwenhou);//向委托中添加英文问候的方法 ^-^ 是不是和实例化对象 和实例化类一样? 实际上委托在编译器执行的时候就是类 只不过委托是类型安全的。。。 51 52 wh("jun.cao"); //通过委托调用的 英文问候 53 Console.WriteLine("---------------------------------\n"); 54 wh += new wenhou(Chineswenhou); //向委托中添加中文问候的方法 55 56 wh("曹俊"); // 调用委托 ,委托会依次 调用委托中绑定的方法 57 Console.WriteLine("---------------------------------\n"); 58 59 wh -= new wenhou(Englishwenhou); //移除委托中的方法。 ^-^ 可以添加委托方法 就可以去除掉委托方法咯 += 是向委托中添加方法 -= 就是移除委托中已存在的方法 60 61 wh("曹俊"); 62 63 Console.ReadKey(); 64 /* 65 输入: 66 GoodMorningjun.cao 67 --------------------------------- 68 69 GoodMorning曹俊 70 早上好曹俊 71 --------------------------------- 72 73 早上好曹俊 74 75 76 */ 77 } 78 } 79 }