C# Learning—Step By Step(9)
第九章 委托和事件
一、委托概述
1.什么是委托
·委托是C#中的内置引用类型,类似于C/C++中的函数指针
·不同的是委托是一种安全的封装方法的类型
·委托包含对方法的引用
2.委托的作用
·委托将名称与方法的定义连接起来,即将方法的实现附加到该名称
·使用委托可以在运行时动态设定要调用的方法
3.优点:
·不知道方法名称也可以调用方法,执行一个委托的同时就会执行该委托引用的方法
4.声明委托
Delegate 返回类型 委托名 参数列表(返回类型和参数列表必须和将要调用的方法一致,否则委托不到这个方法)
5.实例化委托
“new 委托名(方法名) (注:方法名后不加圆括号)” ,此方法名使委托指向该方法
6.语法
·调用委托时将方法传入
·与调用方法相同
·与方法的区别:委托时没有实现的,实际调用的是方法的实现
·委托的形参名在以后的调用中用不到,只要参数类型一致即可,参数名可以任意定义
7.多路广播委托
二、事件概述
1.什么是事件
·事件是类在发生其关注的事情时用来提供通知的一种方式
·使用事件,对象可以将关于事件或已发生变化的信息通知其他对象
·事件使用委托来为触发时将调用的方法提供类型安全的封装
·发行者:把发生的事件信息通知其他对象的对象
·订阅者:注册(订阅)到事件的对象
3. 声明事件
·定义委托,然后定义事件
4.订阅事件
·添加一个委托,事件引发时该委托将调用一个方法
5.引发事件
·语法:与调用方法相同
·先判断是否有对象订阅该事件
·事件的触发一般放在一个方法中,该方法必须放在定义事件的类中
6步骤:①定义事件 ②给对象预订该事件 ③通知事件的订户
·事件基于委托来实现,要声明事件必须先声明委托
7.带参数的事件
·参数传递方向与方法不同,事件是从类内部向外部传递,而方法是将类外部的实例作为参数传入类内部的方法
·事件参数的类型通常都继承于System.EventArgs类
·事件的委托通常都返回Void,并且带有两个参数
·事件要先被委托到方法才能执行
8.匿名方法
·要将代码块传递为委托参数,创建匿名方法则是唯一的方法
·如果使用匿名方法,则不必创建单独的方法,因此减少了实例化委托所需要的编码系统开销
·事件可以是静态的,而委托不可以是静态的。
转载于:https://blog.51cto.com/pein7/368818
C# Learning—Step By Step(9)相关推荐
- Caffe使用step by step:caffe框架下的基本操作和分析
Caffe使用step by step:caffe框架下的基本操作和分析 时间:2015-10-16 11:40:09 阅读:808 评论:0 收藏:0 [点我 ...
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolutional Neural Networks: Step by Step
吴恩达deeplearning.ai课程作业,自己写的答案. 补充说明: 1. 评论中总有人问为什么直接复制这些notebook运行不了?请不要直接复制粘贴,不可能运行通过的,这个只是notebook ...
- Asp.Net Core 5 REST API 使用 JWT 身份验证 - Step by Step(二)
翻译自 Mohamad Lawand 2021年1月22日的文章 <Asp Net Core 5 Rest API Authentication with JWT Step by Step> ...
- 吴恩达深度学习5.1练习_Sequence Models_Building a RNN Step by Step
转载自吴恩达老师深度学习课程作业notebook 与课件答案不一致的原因: da_prevt = da[:, :, T_x -1] gradients = lstm_cell_backward(da_ ...
- Step by Step演示如何训练Pytorch版的EfficientDet
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx Paper:https://arxiv.org/abs/1911.09070 Base Git ...
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业——Convolution model:step by step and application (4.1)
一.Convolutional Neural Networks: Step by Step Welcome to Course 4's first assignment! In this assign ...
- Design POX controller step by step
Design POX controller step by step In this article, I'll describe how to understand the POX controll ...
- 【Step By Step】将Dotnet Core部署到Docker下
一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...
- python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...
- C#2.0实例程序STEP BY STEP--实例二:数据类型
C#2.0实例程序STEP BY STEP--实例二:数据类型 与其他.NET语言一样,C#支持Common Type Sysem(CTS),其中的数据类型集合不仅包含我们熟悉的基本类型,例如int, ...
最新文章
- 鸿蒙法则的能力,真正厉害的人,都懂得这五个做事法则,如能悟透,成功不难...
- 新思路!商汤开源利用无标注数据大幅提高精度的人脸识别算法
- sqlite第三方类库FMDB的使用
- 33行代码AC——例题6-5 移动盒子(Boxes in a Line, UVa 12657)——解题报告
- fullcalendar php,日历插件fullcalendar+php的使用教程 — 读取json数据
- Oracle 分组拼接字符串
- 宝塔面板连接阿里云服务器、及部署网页项目教程
- 欺骗的艺术----(2)
- 计算机程序手工编织,丝绸编程秒杀计算机 《锦绣纪》致敬最强大脑
- 对前端页面的边框设置
- 如何破“万事开头难”?试试这三招
- VC++中使用使用winnet类获取网页内容
- 关联规则—频繁项集Apriori算法
- 【爱情叙记】--刚闹完别扭
- Unity跟随鼠标顺时针或逆时针旋转之美
- Excel黑科技——含合并单元格的同行求和并下拉自动填充
- gdal-ogr2ogr空间数据转换
- 大型数据中心互联(T级光传输方案)
- jQuery 操作 input 之 checkbox
- qt 环境下mapx组件的鼠标跟踪