- 2
- 0
- 约1.79万字
- 约 72页
- 2018-06-26 发布于福建
- 举报
第8 面向对象课件
8.5 委托 8.5.4 委托中的协变与逆变 2. 逆变 public int getPosition(Person p){ …… } public int getPosition(Student s){ …… } 现在有一个委托Position,声明格式如下: public delegate int Position(Student s); 显然委托Position的签名与第二个getPosition方法签名相同,而委托Position的参数数据类型正好是第一个getPosition方法的参数数据类型的派生类,因此如果使用该委托来调用第一个getPosition方法,则系统将进行隐式转换,把委托的Student类型转换为Person类型。 综上所述,协变是指能够使用与原始指定的派生类型相比,派生程度更大的类型;逆变则是指能够使用派生程度更小的类型。 8.6 事件 事件(event)是面向对象程序设计的重要特征之一,是类的重要成员,其使用方法和委托的联系非常密切。 8.6.1 事件简介 事件是类用来通知对象需要执行某种操作的方式,通常用在图形用户界面中。在Windows应用程序运行时,经常会产生许多事件,例如:鼠标单击按钮、按下按键、窗口最小化或者最大化等。 8.6 事件 8.6.1 事件简介 事件定义为对象发送的消息,以发消息的形式通知操作的发生。事件本质上就是对消息的封装,用作对象之间的通信。 面向对象程序设计是基于事件驱动的程序设计,一个完整的事件处理系统一般有三个构成要素: (1) 事件源:指能触发事件的对象,也称为事件的发送者或事件的发布者。 (2) 侦听器:指能接收到事件消息的对象,Windows提供了基础的事件侦听服务。 (3) 事件处理程序:当事件发生时,可以对事件进行处理,也称为事件函数或事件方法; 8.6 事件 8.6.1 事件简介 要想正确的处理.NET中的事件,关键是要理解事件和委托是如何工作的。基于“发布者/订阅者(publish / subscriber)”模式的具体实现步骤如下: (1) 定义委托类型,并在发布者类中定义一个该类型的公有事件成员。 (2) 在订阅者类中定义委托处理方法。 (3) 订阅者对象将其事件处理方法合并到发布者对象的事件成员上。 (4) 发布者对象在特定的情况下激发事件,自动调用订阅者对象的委托处理方法。 8.6 事件 8.6.2 声明事件和激发事件 在C#中,事件实际上是委托类型的变量,是委托的一种特殊形式。C#允许使用内置的委托类型来声明一个标准的事件,也允许先自定义委托,再声明自定义事件。 在.NET Framework中内置的EventHandler委托具有两个参数,它们的数据类型分别是Object和EventArgs类型,并且没有返回值。Object类型的参数名通常为sender,表示事件发布者本身;EventArgs类型的参数名通常为e,它将System.EventArgs类的新实例传递给事件处理方法,主要包括与事件相关的数据。 在实际编程中,有时需要从EventArgs类派生自定义事件参数类,这样发布者可以将特定的数据发送给接收者的事件处理方法。 8.6 事件 8.6.2 声明事件和激发事件 使用内置的EventHandler委托声明事件的一般格式如下: 【格式】public event EventHandler 事件名; 【说明】event关键字用于在发布者类中声明事件。 例如,以下代码表示定义了一个名为onClick的事件。 public event EventHandler onClick; 8.6 事件 8.6.2 声明事件和激发事件 使用自定义的委托类型也可以声明事件,一般格式如下: public delegate 返回值类型 委托类型名([参数列表]); public event 委托类型名 事件名; 【说明】委托类型的参数非常灵活,可以省略,可以是标准的Object参数和EventArgs参数,也可以是其他参数,但一定要注意保证与事件处理程序的参数匹配。 8.6 事件 8.6.3 订阅事件和处理事件 事件声明之后,实质上得到的只是一个委托型的变量,并不意味着就能够成功触发事件。如何将声明的事件和事件处理程序联系起来呢?这就要用到订阅者(负责绑定事件与事件方法的类)。 也就是需要在接收事件的类中创建一个方法来响应这个事件(即处理事件),并且创建委托对象把事件与事件方法联系起来,这个操作过程称为“订阅事件”。 【例8-9】 应用事件驱动模型解决交通红绿灯问题。 8.6 事件
您可能关注的文档
- 第1章 立叶变换.ppt
- 第1节3抗心绞药课件.ppt
- 第1节 n维向量其线性相关性.ppt
- 第1节 向量内积和正交矩阵.ppt
- 第1讲 梯运行条件课件.ppt
- 第1章系统技术求书 中国国际招标网.doc
- 第1章 其他类中药教学课件.ppt
- 第1课 三百六十是h 动物82行.doc
- 第20050911期招标公告.doc
- 第1章 厌氧性细菌.ppt
- 统编版2025年春季新版七年级下册历史 第21课 明清时期的科技与文化 教案.docx
- 雅安雨城法院书记员招聘考试真题库2025.docx
- 2026届安徽合肥市高考一模高考语文试卷试题(含答案详解).pdf
- 【专题研究】国内外城市更新研究的最新进展.pdf
- 【专题研究】老旧城区改造居民满意度影响因素研究——以遂宁市老旧城区改造为例.pdf
- 【专题研究】关于旧城空间改造理论与创意设计案例的几点思考.pdf
- 西藏拉萨市高三下学期期末物理备考重点详解.docx
- 泾县法院书记员招聘笔试真题2025.pdf
- 2026年春【苏教版】-六年级数学下册-面积的变化.pptx
- 2026年春【苏教版】-六年级数学下册-7.pptx
原创力文档

文档评论(0)