本例子是一个关于委托的小例子[猫叫,狗跳,人喊]。仅供学习分享使用,如有不足之处,还请指正。
概述
委托是C#开发中一个非常重要的概念,理解起来也和常规的方法不同,但一旦理解清楚,就可以信手拈来,随处可用。
委托是对方法的抽象。它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。
涉及知识点
委托的定义
- 以deleagate关键字开头。
- 返回类型+委托类型名+参数列表。
效果图
如下【点击打开猫,弹出CatForm,点击喵喵按钮,触发事件,调用其他类的委托】:
核心代码
代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace DemoDelegate 7 { 8 public delegate void Handler();//定义一个委托类型 9 /// <summary> 10 /// 猫猫 11 /// </summary> 12 public class Cat 13 { 14 15 public Handler Miao; 16 17 /// <summary> 18 /// Miao叫的动作 19 /// </summary> 20 public void MaioMiao() 21 { 22 var action = Miao; 23 if (action != null) 24 { 25 action(); 26 } 27 } 28 } 29 } 30 /////////////////////////////////////////////////// 31 using System; 32 using System.Collections.Generic; 33 using System.Linq; 34 using System.Text; 35 36 namespace DemoDelegate 37 { 38 /// <summary> 39 /// 可爱的狗狗 40 /// </summary> 41 public class Dog 42 { 43 public Handler Tiao; 44 45 /// <summary> 46 /// 狗跳的动作 47 /// </summary> 48 public void DogTiao() 49 { 50 var action = Tiao; 51 if (action != null) 52 { 53 action(); 54 } 55 } 56 } 57 } 58 59 /////////////////////////////////////////////// 60 61 using System; 62 using System.Collections.Generic; 63 using System.Linq; 64 using System.Text; 65 66 namespace DemoDelegate 67 { 68 /// <summary> 69 /// 主人 70 /// </summary> 71 public class Master 72 { 73 public Handler Han; 74 75 public void HanJiao() 76 { 77 var action = Han; 78 if (action != null) 79 { 80 action(); 81 } 82 } 83 84 } 85 }