- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
教育部普通高等教育十二五国家级规划教材《C#程序设计及应用教程》第3版(包括简化版:《C#程序设计教程》第3版)第4章接口委托与事件 * Ch4 接口委托与事件 4.1 接口 4.2 委托 4.3 事件 4.4 序列化与反序列化 4.5 反射 * 4.1 接口 接口的用途 是用它表示调用者和设计者的一种约定; 接口的作用和抽象类的作用相似,接口是完全抽象的成员集合。 抽象类主要用于关系密切的对象,而接口最适合为不相关的类提供通用的功能。 接口和抽象类选择因素 抽象类:创建不同版本的组件或实现通用的功能,设计大的功能单元 接口:创建的功能在大范围的完全不同的对象之间使用,设计小而简练的功能块 4.1.1 接口的声明和实现 接口可以包含方法、属性、事件和索引器。 接口只包含成员的声明部分,而没有实现部分。 interface关键字声明一个接口,接口名称一般用大写的“I”开头。 [访问修饰符] interface 接口名称 { 接口体 } 【例4-1】演示接口的声明与实现。 * 4.1.2 显式方式实现接口 显式实现接口解决多义性的问题: 由于不同接口中的成员可重名,一个类中实现接口中的成员时可能会存在多义性的问题,为了解决此问题,可以显式实现接口中的成员,即用完全限定的接口成员名称作为标识符。 例如,一个实现“文件抽象”的类一般会实现一个具有释放文件资源作用的Close成员函数,同时还可能使用显式接口成员实现来实现IDisposable接口的Dispose方法: * 4.1.2 显式方式实现接口 interface IDisposable { void Dispose(); } class MyFile: IDisposable { void IDisposable.Dispose() { Close(); } public void Close() { // Do whats necessary to close the file System.GC.SuppressFinalize(this); } } * 4.1.2 显式方式实现接口 显式接口成员主要用途: 显式接口成员实现在一个公用的类或结构中实现一些仅供内部使用,不允许外界访问的接口。 显式接口成员实现可以消除因同时含有多个相同签名的接口成员所引起的多义性。 【例4-2】演示如何以显式方式实现接口。 * 4.1.3 利用接口实现多继承 C#继承的方式: 类继承:实现单一继承 接口继承:实现多重继承。 接口可以继承其他接口,语法为 [访问修饰符] interface 接口名称 : 被继承的接口列表 { 接口体 } 【例4-3】演示如何利用接口实现多继承。 * 4.2 委 托 委托类型(delegate type) 委托类似C++语言中指向函数的指针 函数指针只能够指向静态的方法,委托还可指向实例的方法。 委托是完全面向对象的技术,无内存泄露情况。 委托特点 任何类或对象中的方法都可以通过委托来调用 要求方法的参数类型和返回类型要与委托的参数类型和返回类型完全匹配。 * 4.2.1 定义委托类型 定义委托的一般语法 [访问修饰符] delegate 返回类型 委托名([参数序列]); 例如:定义了一个名为MyFunction的委托 public delegate double MyFunction(double x); 编译器编译这行代码时,会自动为其生成一个继承自System.Delegate的类型,类型的名称为MyFunction。 * 4.2.2 通过委托调用方法 定义了委托类型后,就可以像使用其他类型一样使用委托。通过委托,可将方法作为实体赋值给变量,也可以将方法作为委托的参数来传递。 例:将f作为参数,f为自定义的委托类型MyFunction: public static double[] Apply(double[] a, MyFunction f) { double[] result = new double[a.Length]; for (int i = 0; i a.Length; i++) result[i] = f(a[i]); return result; } * 4.2.2 通过委托调用方法 对下面的静态方法: public static double Square(double x) { return x * x; } 可将静态的Square方法作为MyFunction类型的参数传递给Apply方法: double[] a = {0.0, 0.5, 1.
您可能关注的文档
- 第3章 电子材料电导(1).ppt
- LTE新技术原理与应用分析.pdf
- LTE信令与端到端培训资料.pptx
- 第3章 光波导元器件和传感器.ppt
- LTE与方案介绍中文课堂培训.ppt
- 第3章 过程通道数据采集1-2.ppt
- LTE载波聚合(LTE中高级考试资料).pdf
- 第3章 过程通道数据采集5.ppt
- 第3章 集成逻辑门电路.ppt
- LVDS DP等显示器接口简介.ppt
- 2020年药事管理与法规题解析 .pdf
- 2017-2021年中国高速公路行业现状及发展趋势分析 .pdf
- 2012年电力工业发展报告 .pdf
- 贵州省贵阳市某区2022-2023学年八年级上学期期末语文试题(原卷版).docx
- 河北省沧州市2022-2023学年八年级上学期期末语文试题(解析版).docx
- 海南省省直辖县级行政单位2022-2023学年八年级上学期期末语文试题(原卷版).docx
- 海南省东方市2022-2023学年九年级上学期期末语文试题(原卷版).docx
- 河北省邯郸市锦玉中学2022-2023学年八年级上学期期末语文试题(解析版).docx
- 海南省海口市(部分校)2022-2023学年八年级上学期期末语文试题(A)(原卷版).docx
- 河北省保定市第十七中学2022-2023学年八年级上学期期末语文试题(原卷版).docx
文档评论(0)