事件
2022/7/26 23:29:29
本文主要是介绍事件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
初步了解事件
- 定义:单词Event,译为“事件”。通俗的解释就是:“能够发生的什么事情”
- 角色:使对象或类具备通知能力的成员
- 使用:用于对象或类间的动作协调与信息传递(消息推送)
- 原理: 事件模型*(Event Model)中的两个5
- “发生->响应”中的5个部分——— 闹钟响了你起床、孩子饿了你做饭 分析:闹钟(事件拥有者),响了(事件本身),你(事件订阅者),起床(响应事件),及蕴含的"订阅"关系
- “发生->响应”中的5个动作——— (1)我有一个事件(2)一个人或一群人关心这个事件 (3)我的这个事件发生了 (4)关系这个事件的人被依次通知到了 (5)被通知到了的人根据拿到的事件信息(又称“事件数据”、“事件参数”)对事件进行响应
事件的声明
- 完整声明
public class Custorm { private OrderEventHandler orderEventHandler; public event OrderEventHandler Order { add { orderEventHandler += value; } remove { orderEventHandler += value; } } }
- 简略声明(字段式声明,field-like) 属于C#提供的语法糖 通过反编译发现,使用简略声明时,系统会帮助我们生成一个委托类型字段
public class Custorm { public event OrderEventHandler Order; }
- 有了委托字段/属性,为什么还需要事件? 为了程序的逻辑更加“有道理”,更加安全,谨防“借刀杀人”,检验而言,属于类的事件,只有类自身可以触发。
- 事件的本质时委托字段的一个包装器。
事件与委托的关系
- 事件的本质是加装在委托字段上的一个“蒙版”,是个起掩蔽作用的包装器。这个用于阻挡非法操作的“蒙版”,绝不是委托字段本身。
- 为什么要用委托类型来申明事件?
- 站在source的角度来看,是为了表明source能对外传递哪些消息
- 站在subscriber的角度来看,它是一种约定,是为了约束能够使用什么样的签名方法来处理(响应)事件
- 委托类型的实例将用于存储(引用)事件处理器
- 对比事件与属性
- 属性不是字段——很多时候属性是字段的包装器,这个包装器用来保护字段不被滥用
- 事件不是委托字段——它是委托字段的包装器,这个包装器用来保护委托字段不被滥用
- 包装器永远不可能是被包装的东西
这篇关于事件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行