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
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值