1:什么是事件?
在文档是这样定义的,事件就是一种使对象或者类能够提供通知的的成员,就是对象或者类具备了通知的能力。(闹钟响了给起床了这个事件告诉我们 谁通知了这个事件(闹钟)通知了谁(我)闹钟响了我该干什么(起床))
2下面是一些关于事件的重要事项
发布者:意思就是发布某一个事件的类或者是结构,其他类可以在该事件发生时得到通知
订阅者:注册并在事件发生时得到通知类或者是结构。
事件处理程序(event handler):由订阅者注册到事件中的方法,在发布者触发事件时执行。事件处理程序方法可以定义在事件所在的类中或者是结构中,也可以在不同的类或者结构中。
*其实事件和委托是非常相似的,实际上事件就像专门用于某种特殊的用途的简单委托,事件包含了一个私有的委托,委托中又几个方法。
*有关事件的私有委托重要事项如下:
事件提供了对他的私有控制委托的结构的访问。也就是说你没有办法直接访问(可以这样说就是事件就是安全版的委托)
事件中可以用的操作比委托少,对于事件我们只可以添加,删除或者调用事件处理程序
当事件被触发时候,事件调用委托依次来调用委托中的方法
3:源代码组件概览
事件中使用的代码是由5部分组成的,下面对这些组件一一进行介绍
委托类型的声明:事件和事件处理程序必须有相同的签名和返回值,他们通过委托类型进行描述
事件处理程序声明: 订阅者类中会在事件触发时执行的方法声明。他们不一定是显示命名的方法,还可以是匿名方法和Lambda表达式
事件声明: 发布者类中必须声明一个订阅者类可以注册的事件成员。当声明的事件为publi时,称为发布了事件。
事件注册: 订阅者必须订阅事件,才能在事件触发时得到通知。
触发事件的代码:发布者类中“触发”事件并导致调用注册的所有事件处理程序的代码。
4:声明事件
发布者必须提供事件对象。
事件声明在一个类中