"课程一 事件&代理" 讲解了如何实现事件响应功能,重点关注事件的发起者和接收者,以及它们之间的关联。事件的发起者需要声明事件的代理,声明事件,注册事件的函数,并有触发事件的函数。事件接收者则需要有响应事件的函数,且其参数需与触发函数一致。 在事件的发起者部分,以一个名为 `Phone` 的类为例,它包含了以下几个关键组件: 1. 声明事件的代理:`PhoneHandler` 是一个委托类型,代表一个没有参数也没有返回值的方法,用于处理事件。 2. 声明事件:`Message` 和 `Call` 是两个事件,分别对应短信和电话事件,它们是 `PhoneHandler` 类型的。 3. 注册事件的函数:`RegisterWithPhoneHandler` 和 `RegisterWithPhoneCall` 分别用于注册短信和电话事件的处理方法,将接收者的响应函数添加到事件的委托列表中。 4. 触发事件的函数:`SendMessage` 和 `PhoneCall` 是触发事件的函数,如果对应的事件处理委托不为空,就会执行其中的代码,模拟触发事件的行为。 在事件的接收者部分,创建了一个 `Person` 类,它包含: 1. 事件响应函数:`ReceiveMessage` 和 `ReceivePhone` 分别对应处理短信和电话事件的方法,根据接收者的名称输出相应信息。 实现事件通信,需要将事件接收者(如 `Person` 类的实例)的响应方法注册到事件发起者(`Phone` 类的实例)上,这样当 `Phone` 触发事件时,相应的 `Person` 实例就能接收到并处理这些事件。这部分未给出完整代码,但通常会有一个主程序或类来完成这个连接过程,例如: ```csharp Phone phone = new Phone(); Person person1 = new Person("张三"); person1.ReceiveMessage += phone.Message; // 注册短信事件 person1.ReceivePhone += phone.Call; // 注册电话事件 phone.SendMessage(); // 触发短信事件,张三收到短信 phone.PhoneCall(); // 触发电话事件,张三接到电话 ``` 这个例子展示了如何使用事件和代理在类之间建立通信,使得事件发起者可以通知事件接收者,而无需直接引用接收者,这种设计模式符合面向对象编程中的解耦原则,提高了代码的可维护性和灵活性。
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 94
- 资源: 23
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Unity UGUI性能优化实战:UGUI_BatchDemo示例
- Java实现小游戏飞翔的小鸟教程分享
- Ant Design 4.16.8:企业级React组件库的最新更新
- Windows下MongoDB的安装教程与步骤
- 婚庆公司响应式网站模板源码下载
- 高端旅行推荐:官网模板及移动响应式网页设计
- Java基础教程:类与接口的实现与应用
- 高级版照片排版软件功能介绍与操作指南
- 精品黑色插画设计师作品展示网页模板
- 蓝色互联网科技企业Bootstrap网站模板下载
- MQTTFX 1.7.1版:Windows平台最强Mqtt客户端体验
- 黑色摄影主题响应式网站模板设计案例
- 扁平化风格商业旅游网站模板设计
- 绿色留学H5模板:科研教育机构官网解决方案
- Linux环境下EMQX安装全流程指导
- 可爱卡通儿童APP官网模板_复古绿色动画设计