目录
一、事件声明:这个事件发布者类中的声明保存并调用事件处理程序
二、委托类型声明:事件和事件处理程序必须有共同的签名和返回类型,它们通过委托类型声明进行描述
四、触发事件的代码: 发布者类中的这段代码调用事件导致它调用事件处理程序
五、事件处理程序声明:这些在订阅者类的方法中的描述会在事件触发时被执行,它们不需要有独立的办法,可以是匿名方法或lambda表达式
程序集:编译器接受源代码文件并生成该文件
类库:以.dll缩写的程序集文件
.Net BCL(Base Class Library)——基底类别库,是CLI(Common Language Infrastructure)之一
using
using命名空间指令
using别名指令
结构:(struct)
结构派生自System.ValueType(其派生自object)
值类型,不能被派生
字段初始化不被允许
实例构造函数:
枚举:(enum)
值类型,只有一种类型成员:命名的整数常量
委托:
委托保存一个或多个方法
委托可以看做包含有序方法列表的对象,这些方法具有相同的签名和返回对象,列方法叫做调用列表
创建委托对象两种方法:
快捷语法:
组合委托:
【记住一点】委托是不可变的,实际上在创建新的委托
为委托增加方法:【+=运算符】
从委托移除方法:
调用委托:
一个方法可以在调用列表中出现多次
引用参数的值会在调用期间发生改变
匿名函数(anonymous method):
delegate(parameters) {语句块}
使用匿名方法:
事件:
事件好像被简化的针对特殊用途的委托,事件是成员,没有对象,被隐式初始化为null
相关术语:
触发事件(raise) invoke(调用)或fire(触发)事件的术语,当事件被触发时,所有注册到它的方法都会被调用
发布者(publisher) 让事件被其他类或结构可见并使用的类或结构
订阅者(subscriber) 把事件和发布者关联注册的类或结构
事件处理程序(event handler) 注册到事件的方法。可以在事件所在的类或结构中,或在不同的类或结构中
由五部分代码组成:
一、事件声明:这个事件发布者类中的声明保存并调用事件处理程序
二、委托类型声明:事件和事件处理程序必须有共同的签名和返回类型,它们通过委托类型声明进行描述
三、事件注册:把事件连接到事件处理程序
四、触发事件的代码: 发布者类中的这段代码调用事件导致它调用事件处理程序
如果事件没有触发,什么都没有发生
五、事件处理程序声明:这些在订阅者类的方法中的描述会在事件触发时被执行,它们不需要有独立的办法,可以是匿名方法或lambda表达式
注:必须有和事件委托一致的返回类型和签名
事件委托类型的标准模式:
EventHandler:
EventArgs:
扩展EventArgs来传递数据: