net程序设计(下)ppt

net程序设计(下)ppt

ID:36207921

大小:317.00 KB

页数:111页

时间:2019-05-07

net程序设计(下)ppt_第1页
net程序设计(下)ppt_第2页
net程序设计(下)ppt_第3页
net程序设计(下)ppt_第4页
net程序设计(下)ppt_第5页
资源描述:

《net程序设计(下)ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C#.NET程序设计(下)华东师范大学信息学院江红第9章委托和事件委托的基本概念委托的声明、实例化和调用多播委托事件处理机制事件的声明、订阅和取消.NETFramework事件模型9.1委托委托是用来处理需用函数指针来处理的情况的委托是完全面向对象的,是类型安全的委托是可保存对方法的引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调委托声明定义一个从System.Delegate类派生的类。委托实例封装了一个调用列表,该列表列出了一个或多个方法,每个方法称为一

2、个可调用实体。对于实例方法,可调用实体由该方法和一个相关联的实例组成9.1.1委托的声明、实例化和调用声明:[委托修饰符]delegate返回值类型委托名([形参列表]);实例化:委托名委托实例名=new委托名(匹配方法);调用:委托实例名(实参列表);【例9.1】委托的实例化和调用示例1【例9.2】委托的实例化和调用示例29.1.3匿名方法委托无需先声明类或结构以及与委托匹配的方法,而是在创建委托的实例时,直接声明与委托匹配的方法的代码块(匿名方法)委托名委托实例名=newdelegate([形参列表]){方法体;}[;]【例9.3】匿名方

3、法委托示例9.1.4多播委托委托也可以包含多个方法,这种委托称为多播委托如果调用多播委托实例,则按顺序依次调用多播委托实例封装的调用列表中的多个方法声明多播委托时,其返回类型必须为void,因为无法处理多次调用的返回值,而且不能带输出参数(但可以带引用参数)多播委托通过+或+=向多播委托实例封装的调用列表中添加方法;通过–或-=从多播委托实例封装的调用列表中删除方法【例9.4】多播委托示例9.1.5委托的兼容性D和M的参数数目相同,且各自对应参数具有相同的ref或out修饰符;对于每个ref或out参数,D中的参数类型与M中的参数类型相同。存

4、在从M的返回类型到D的返回类型的标识或隐式引用转换。即允许方法具有的派生返回类型比委托中定义的更多(协变)。每一个值参数(没有ref或out修饰符的参数)都存在从D中的参数类型到M中的对应参数类型的标识或隐式引用转换。允许方法具有的派生参数类型比委托类型中的更少(逆变)【例9.5】委托的兼容性示例9.2事件类或对象可以通过事件(event)向其他类或对象通知发生的相关事情。发送(或引发)事件的类称为“发行者”(生产者),接收(或处理)事件的类称为“订户”(消费者)。事件是一种使对象或类能够提供通知的成员。客户端可以通过提供事件处理程序(eve

5、nthandler)为相应的事件添加可执行代码。事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其他的程序逻辑触发的事件特点发行者确定何时引发事件,订户确定执行何种操作来响应该事件一个事件可以有多个订户。一个订户可处理来自多个发行者的多个事件没有订户的事件永远不会被调用事件通常用于通知用户操作,例如,图形用户界面中的按钮单击或菜单选择操作如果一个事件有多个订户,当引发该事件时,会同步调用多个事件处理程序可以利用事件同步线程在.NETFramework类库中,事件是基于EventHandl

6、er委托和EventArgs基类的事件处理机制事件实际上是委托的一种特殊形式。C#使用一种委托模型来实现事件。事件模型分为事件生产者和事件消费者,其处理机制大致可以分为下列4步在事件生产者类中声明一个事件成员,即某种事件处理委托(简称为事件委托)的实例(多播事件委托实例);在事件消费者类中声明与事件委托相匹配的事件处理方法;通过“+=”向多播事件委托实例封装的调用列表中添加事件处理方法,或通过“-=”从多播事件委托实例封装的调用列表中删除事件处理方法;在事件生产者类中添加有关发生事件的代码,即当满足某种条件时(发生事件),则调用委托,即调用多

7、播事件委托实例封装的调用列表中添加的事件处理方法。如果没有订阅,即事件实例为Null,则不作任何处理【例9.6】事件处理机制示例事件的声明、订阅和取消声明:[修饰符]event事件委托名事件名;C#使用加法赋值运算符(+=)来为事件附加事件处理程序;使用减法赋值运算符(-=)取消订阅事件,所有订户都取消订阅事件后,发行者类中的事件实例将设置为null对象.事件名+=委托实例;对象.事件名-=委托实例;9.2.6综合举例:实现事件的步骤实验和习题实验5-7第九章例9-1~例9-7第9章委托和事件单选题填空题思考题第10章结构和枚举结构与类的区别

8、结构的声明和调用枚举的声明和使用枚举的运算System.Enum的使用10.1结构结构与类很相似,均为包含数据成员和函数成员的数据结构结构是值类型,因而可以通过装箱

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。