0
点赞
收藏
分享

微信扫一扫

C#委托,事件详解

niboac 2022-04-02 阅读 52
c#

目录

程序集:编译器接受源代码文件并生成该文件

结构:(struct)

枚举:(enum)

委托:

创建委托对象两种方法:

组合委托:

为委托增加方法:【+=运算符】

 从委托移除方法:

 调用委托:

匿名函数(anonymous method):

事件:

由五部分代码组成:

一、事件声明:这个事件发布者类中的声明保存并调用事件处理程序

二、委托类型声明:事件和事件处理程序必须有共同的签名和返回类型,它们通过委托类型声明进行描述

三、事件注册:把事件连接到事件处理程序

四、触发事件的代码: 发布者类中的这段代码调用事件导致它调用事件处理程序

五、事件处理程序声明:这些在订阅者类的方法中的描述会在事件触发时被执行,它们不需要有独立的办法,可以是匿名方法或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来传递数据:

 

举报

相关推荐

0 条评论