本例子是一个关于委托的小例子[猫叫,狗跳,人喊]。仅供学习分享使用,如有不足之处,还请指正。
概述
委托是C#开发中一个非常重要的概念,理解起来也和常规的方法不同,但一旦理解清楚,就可以信手拈来,随处可用。
委托是对方法的抽象。它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。
涉及知识点
委托的定义
- 以deleagate关键字开头。
- 返回类型+委托类型名+参数列表。
效果图
如下【点击打开猫,弹出CatForm,点击喵喵按钮,触发事件,调用其他类的委托】:
核心代码
代码如下:
1 using System; 2 System.Collections.Generic; 3 System.Linq; 4 System.Text; 5 6 namespace DemoDelegate 7 { 8 public delegate void Handler();//定义一个委托类型 9 /// <summary> 10 /// 猫猫 11 </summary> 12 class Cat 13 { 14 15 public Handler Miao; 16 17 18 Miao叫的动作 19 20 void MaioMiao() 21 { 22 var action = Miao; 23 if (action != null) 24 { 25 action(); 26 } 27 } 28 } 29 } 30 /////////////////////////////////////////////////// 31 32 33 34 35 36 37 38 39 可爱的狗狗 40 41 Dog 42 43 Handler Tiao; 44 45 46 狗跳的动作 47 48 DogTiao() 49 50 Tiao; 51 52 53 54 55 56 57 58 59 /////////////////////////////////////////////// 60 61 62 63 64 65 66 67 68 69 主人 70 71 Master 72 73 Handler Han; 74 75 HanJiao() 76 77 Han; 78 79 80 81 82 83 84 85 }
界面类代码如下:
1 2 3 System.ComponentModel; 4 System.Data; 5 System.Drawing; 6 7 8 System.Windows.Forms; 9 10 11 12 partial MainForm : Form 13 14 private Dog dog; 15 16 Master master; 17 18 MainForm() 19 20 InitializeComponent(); 21 InitInfo(); 22 23 24 25 初始化信息 26 27 private InitInfo() { 28 dog = new Dog(); 29 dog.Tiao += TiaoMethod; 30 master = Master(); 31 master.Han += HanMethod; 32 33 34 35 喵喵 36 37 <param name="sender"></param> 38 <param name="e"></param> 39 void btnCatMiao_Click(object sender,EventArgs e) 40 41 CatForm catForm = CatForm(); 42 catForm.MiaoAction += MaioMethod; 43 catForm.ShowDialog(); 44 45 46 void MaioMethod( 47 this.txtCat.Text = "猫在父页面叫了"; 48 this.dog.DogTiao(); 49 .master.HanJiao(); 50 51 52 TiaoMethod() 53 54 this.txtDog.Text = 狗跳了 55 56 57 HanMethod() 58 59 this.txtMaster.Text = 别叫了 60 61 62 63 /////////////////////////////////////////////////////////////// 64 65 66 67 68 69 70 71 72 73 74 75 CatForm : Form 76 77 Cat cat; 78 79 event EventHandler MiaoAction; 80 81 CatForm() 82 83 84 85 86 87 88 cat = Cat(); 89 cat.Miao += 90 91 92 MaioMethod() 93 94 猫叫了 95 MiaoAction; 96 ) { 97 action(cat,); 98 99 100 101 102 103 .cat.MaioMiao(); 104 105 106 }
关于委托,功能和用途还有很多,这里只是抛砖引玉,希望能对大家有帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。