第九章  委托和事件

一、委托概述

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)相关推荐

  1. Caffe使用step by step:caffe框架下的基本操作和分析

    Caffe使用step by step:caffe框架下的基本操作和分析 时间:2015-10-16 11:40:09      阅读:808      评论:0      收藏:0      [点我 ...

  2. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolutional Neural Networks: Step by Step

    吴恩达deeplearning.ai课程作业,自己写的答案. 补充说明: 1. 评论中总有人问为什么直接复制这些notebook运行不了?请不要直接复制粘贴,不可能运行通过的,这个只是notebook ...

  3. 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> ...

  4. 吴恩达深度学习5.1练习_Sequence Models_Building a RNN Step by Step

    转载自吴恩达老师深度学习课程作业notebook 与课件答案不一致的原因: da_prevt = da[:, :, T_x -1] gradients = lstm_cell_backward(da_ ...

  5. Step by Step演示如何训练Pytorch版的EfficientDet

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx Paper:https://arxiv.org/abs/1911.09070 Base Git ...

  6. 吴恩达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 ...

  7. Design POX controller step by step

    Design POX controller step by step In this article, I'll describe how to understand the POX controll ...

  8. 【Step By Step】将Dotnet Core部署到Docker下

    一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...

  9. python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...

  10. C#2.0实例程序STEP BY STEP--实例二:数据类型

    C#2.0实例程序STEP BY STEP--实例二:数据类型 与其他.NET语言一样,C#支持Common Type Sysem(CTS),其中的数据类型集合不仅包含我们熟悉的基本类型,例如int, ...

最新文章

  1. 鸿蒙法则的能力,真正厉害的人,都懂得这五个做事法则,如能悟透,成功不难...
  2. 新思路!商汤开源利用无标注数据大幅提高精度的人脸识别算法
  3. sqlite第三方类库FMDB的使用
  4. 33行代码AC——例题6-5 移动盒子(Boxes in a Line, UVa 12657)——解题报告
  5. fullcalendar php,日历插件fullcalendar+php的使用教程 — 读取json数据
  6. Oracle 分组拼接字符串
  7. 宝塔面板连接阿里云服务器、及部署网页项目教程
  8. 欺骗的艺术----(2)
  9. 计算机程序手工编织,丝绸编程秒杀计算机 《锦绣纪》致敬最强大脑
  10. 对前端页面的边框设置
  11. 如何破“万事开头难”?试试这三招
  12. VC++中使用使用winnet类获取网页内容
  13. 关联规则—频繁项集Apriori算法
  14. 【爱情叙记】--刚闹完别扭
  15. Unity跟随鼠标顺时针或逆时针旋转之美
  16. Excel黑科技——含合并单元格的同行求和并下拉自动填充
  17. gdal-ogr2ogr空间数据转换
  18. 大型数据中心互联(T级光传输方案)
  19. jQuery 操作 input 之 checkbox
  20. qt 环境下mapx组件的鼠标跟踪

热门文章

  1. oracle中日期相减及显示几天几小时几分钟
  2. 将json转为map的两种方式及前后端开发json Api设计规范总结
  3. orcale建表,创建字段id使其自增
  4. vb一个使用URLDownloadToFile实现文件下载的类
  5. 不服就干!抖音要用多闪挑战微信,但官网瞬间被封
  6. NASA好奇号发来战报,32368张火星路况实拍数据集上线 | 资源
  7. 程序员每天晚上都去翻垃圾,竟然年入60万美元?
  8. 浪潮发布OpenStack AI云平台,加速行业AI进程
  9. 美国重金投资3D芯片项目!MIT+美独资公司攻关,旨在继续领先中国
  10. 特斯拉又熬过破产危机后,马斯克说自动驾驶芯片已经准备好了