加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# 关于委托的小例子

发布时间:2020-12-16 01:13:52 所属栏目:百科 来源:网络整理
导读:本例子是一个关于委托的小例子[猫叫,狗跳,人喊]。仅供学习分享使用,如有不足之处,还请指正。 概述 委托是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


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

?源码下载

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读