微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# 关于委托的小例子

本例子是一个关于委托的小例子[猫叫,狗跳,人喊]。仅供学习分享使用,如有不足之处,还请指正。

概述

委托是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 }
View Code

界面类代码如下:

  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 }
View Code


关于委托,功能和用途还有很多,这里只是抛砖引玉,希望能对大家有帮助

 源码下载

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐