使用委托时要先实例化,和类一样,使用new关键字产生委托的新实例,然后将一个或者多个与委托签名匹配的方法与委托实例关联。随后调用委托时,就会调用所有与委托实例关联的方法。

与委托关联可以是任何类或者结构中的方法,可以是静态方法,只要是可以访问的方法都可以。创建一个委托类型使用关键字delegate(委托)

一个委托实例,关联三个方法

移除一个委托实例中的方法  使用“-”

将方法作为参数传递

委托可以让方法作为参数传递给其它方法。

事件自身就是委托类型,由于委托可以绑定和调用多个方法,所以会为事件的处理带来方便。类型只需要对外公开事件,就可以与外部的其它地方关联,从而实现事件订阅

要在类中声明事件,首先要定义用来作为事件封装类型的委托,用event关键字来声明事件。为了允许派生类重写引发事件的代码,通常会在类中声明一个受保护的方法,习惯上

命名On<事件名>

protected virtual    表示受保护的,virtual 关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。

由于不同的事件要传递的参数不同,更多时候是从EventArgs类派生的子类的实例,显然EventHandler委托时不能满足各种情况的。

如果针对不同的事件也定义一个对应的委托,数量一旦多起来,不好管理,为了解决这个问题,.NET类库提供了一个带有泛型参数的事件

处理委托。

public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e);   TEventArgs 是一个泛型参数

转载于:https://www.cnblogs.com/hjxzjp/p/7667536.html

c# 定义委托和使用委托(事件的使用)相关推荐

  1. C#委托、类和事件的验证【C#】

    C#委托.类和事件的验证 题目描述 程序由两部分组成,如下代码所示.第一部分定义了委托.类和事件.第二部分进行验证. using System; namespace HelloWorldApplica ...

  2. C#委托,多播委托,匿名委托,事件

    委托 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 委托是方法的抽象,它存储的就是一系列具有相同签名和返回类型的方法的地址.调用委托的时候,委 ...

  3. js原生事件委托写法,jquery事件委托写法

    什么是事件委托: 事件委托--给父元素绑定事件,用来监听子元素的冒泡事件,并找到是哪个子元素的事件.(不理解冒泡的可以去百度下) 定义: 利用事件冒泡处理动态元素事件绑定的方法,专业术语叫事件委托. ...

  4. C#:钩子、委托、匿名、事件、结构体转字节数组、多线程操纵控件、UDP

    事件 C#事件分为几个步骤: 定义事件 定义处理函数 为事件添加处理函数 激活事件 事件被激活后自动调用处理函数. public event messagehandleer shenzhijiangl ...

  5. C#学习笔记之——委托、线程、事件、lamda表达式

    1.委托--delegate\Action 1.1 delegate 委托可以理解为函数指针. 委托delegate关键词,Delegate和delegate都可以,这个类似于string和Strin ...

  6. 使用事件委托降低重复的事件绑定,从而降低dom操作的对性能的消耗[兼容IE版]

    使用事件委托降低重复的事件绑定,从而降低dom操作的对性能的消耗[兼容IE版] 原理: W3C将DOM2.0模型中事件处理流程分为三个阶段: 一.事件捕获阶段: 当某个元素触发某个事件(如onclic ...

  7. 【从Java转C#】第八章:委托、lambda、事件

    目录 委托.lambda表达式.事件 委托[Delegate] 简介 声明委托 实例化委托 Action 和 Func Action:表示引用一个 void 的方法 Func:允许调用带返回类型的方法 ...

  8. 委托、多播委托(MulticastDelegate)

    委托.多播委托(MulticastDelegate) 多播委托(MulticastDelegate)继承自 Delegate ,表示多路广播委托:即,其调用列表中可以拥有多个元素的委托.实际上,我们自 ...

  9. C# 委托、匿名委托、Lambda表达式详解

    文章目录 委托 委托概述 声明委托类型 创建委托对象 给委托赋值 组合委托 为委托添加方法 从委托移除方法 调用委托 委托的示例 调用带有返回值的委托 调用带有引用参数的委托 匿名方法 使用匿名方法 ...

  10. C语言中的函数指针、函数的直接/间接调用、C# 委托(自定义委托、内置泛型委托、委托的实例化、委托的一般使用(模板方法、回调方法)、泛型委托、多播委托、同步/异步使用委托)

    文章目录 C语言中的函数指针 函数的直接调用与间接调用 Java中没有与委托对应的功能实体 C# 委托 C# 自定义委托类型 C# 内置泛型委托类型 委托的实例化 委托也支持泛型的使用 委托的一般使用 ...

最新文章

  1. 不同品牌android手机ui,各大安卓手机品牌里,系统UI设计对比,谁赢了?
  2. golang 获取切片 slice 第一个 最后一个 元素
  3. Speerio Skinergy 'Image' is ambiguous 错误
  4. Python | 四种运行其他程序的黑科技
  5. C++ 四种类型转换
  6. go设置后端启动_使用 Go Wails 框架来构建桌面应用(Go+Vue.js)
  7. hive 查询是否包含字符串_oracle判断一个字符串中是否包含另外一个字符串
  8. 昔日网瘾少年,现在用AI教你打守望先锋
  9. 镜头对摄像机性能的影响
  10. 正则表达式[\w]+,\w+,[\w+] 三者区别? [],[ABC]+,[\w./-]+ 表达什么?
  11. 用exec()函数执行新程序
  12. 杨昕立计算机学院,写在告别之前——那些来自辅导员们的悄悄话
  13. 《通信网》专题八:接入网技术
  14. python 获取年份_如何从Pythondate时间对象中提取年份?
  15. cache 是什么意思 它包括的L1,L2,L3分别是什么东西
  16. linux lsmod命令 及相关信息
  17. PHP用file_get_contents 显示其他服务器图片
  18. 某车联网App 通讯协议加密分析(四) Trace Code
  19. 树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇三:进阶配置 Home Assistant
  20. 微信小程序转账(简单流程代码)tp6接口

热门文章

  1. 8月前端挑战-----如何做到这个月内每天下班学习两小时
  2. EntityFramework Core并发导致显式插入主键问题
  3. Python基础学习5 -字符串
  4. [文摘]Java正则表达式详解
  5. Yii2.0 PHP框架-姜海强-专题视频课程
  6. 4G模块使用记录移远EC20、BC20
  7. altiumdesigner的基本你操作
  8. JsSIP 注册,拨打填坑
  9. solr学习篇(三) solr7.4 连接MySQL数据库
  10. 新人开车——访问控制