




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14章深入理解C 语言 内容提要 类型与转换变量及其传递多态与虚方法调用动态类型确定对象构造与析构csharp语言新特性 1类型与转换 数据类型 C 的数据类型分值类型 ValueType 和引用类型 ReferenceType 两大类值类型包括简单类型 SimpleType 结构类型 StructType 枚举类型 EnumType 引用类型包括类类型 ClassType 数组类型 ArrayType 指代类型 Delegate ReferenceandValueTypes inti 123 intj i stringt s strings Helloworld 示例 Class Struct cs 值类型的转换 数字类型之间可以互相转化隐式转换floatf 3 显式转换inti int 3 14 整型提升sbytea 1 b 2 a b为int型枚举类型与数字类型之间可以显式转换结构类型之间不能转换 引用类型转换 显式或隐式转换 都要求有继承关系 Personp newStudent 隐式转换Students Student p 显式转换可能转成功 也可能异常IRunnabler p 隐式转换as运算符Students pasStudent 可能成功 也可能为null AsObject cs 引用类型与值类型的转换 inti 123 objecto i intj int o Boxingandunboxing Unboxing必须显式转换 BoxingTest cs inttotal 35 strings String Format Yourtotalwas 0 on 1 total date Hashtablet newHashtable t Add 0 zero t Add 1 one DateTimed DateTime Now Strings d ToString noboxint a newint 2 a 0 33 noboxArrayLista newArrayList a Add 33 boxhere 2变量及其传递 域变量及局部变量 类static变量相当于类中的 全局变量 域变量相当于对象中的变量局部变量在函数体及其 中 在栈中分配 自动消失域变量自动有初值 局部变量则不 LocalVarAndMemberVar cs 按值传送的参数 按值传送要注意值类型与引用类型TransByValue csTransByValueStructClass cs ref参数及out参数 ref参数在传之间必先赋值out参数在函数中必须赋值后才能返回表达式及对象的属性不能作ref及out参数TransByRef csRefSwap csTransByOut csRefColorRGB cs param参数 数组参数 相当于VB的可变参数 参数必须放在最后调用时 可用数组 也可用多个参数定义 doubleMulti paramsdouble nums 调用Multi Multi 27 Multi 3 14 0 9 0 9 Multi 1 2 3 4 5 Multi newdouble 1 2 3 4 5 ParamsTest cs 3多态与虚方法调用 多态 Polymorphism 在面向对象的系统中 多态性是一个非常重要的概念 它允许客户对一个对象进行操作 由对象来完成一系列的动作 具体实现哪个动作 如何实现由系统负责解释 在C 中 多态性的定义是 同一操作作用于不同的类的实例 不同的类将进行不同的解释 最后产生不同的执行结果 C 支持两种类型的多态性 4 2 两种类型的多态性 编译时的多态性编译时的多态是通过重载来实现的 对于非虚的成员来说 系统在编译时 根据传递的参数 返回的类型等信息决定实现何种操作 运行时的多态性运行时的多态性是指直到系统运行时 才根据实际情况决定实现何种操作 C 中 运行时的多态性通过虚成员实现 编译时的多态性提供了运行速度快的特点 而运行时的多态性则带来了高度灵活和抽象的特点 上溯造型与虚方法调用 VirtualInvokeShape cs staticvoiddoStuff Shapes s draw Shapec newCircle Shaper newRectangle Shapes newSquare doStuff c doStuff r doStuff s 虚方法的语法规范 必须有virtual或abstract或override所修饰 虚方法不能省略访问控制符 不能是private的 不能是static的 因为它们应该可以被子类所覆盖 子类中要覆盖父类的虚方法 必须用override 否则认为是新 new 的一个方法 并隐藏了父类的方法 不会实行虚方法调用 覆盖和被覆盖的方法必须有相同的可访问性和相同的返回类型 虚方法与非虚方法的区别 虚方法调用的方法是由对象实例的类型所决定非虚方法调用的方法是由所声明的对象变量来决定的 VirtualAndNoneVirtual cs 最可派生的方法 当多次派生 并有virtual与非virtual方法时 VirtualComplex cs 4动态类型确定 is运算符 用于判断运行时对象的类型格式 对象is类型不是null可转换 而不异常 IsTest cs 与 值类型相等引用类型的相等是判断是否是同一对象除非重载了 及 操作对于string等类型 已经进行了重载对于两个boxing的对象 总是false 得到类型信息 typeof运算符typeof System Console 对象 GetType Type GetType string类名 TypeGetType cs TypeGetMembers cs 反射 反射Reflection ReflectionTest cs 5对象构造与析构 构造方法 构造方法的初始化部分 使用this及base调用本类或父类的构造方法不用this且不用base 则会自动认为base classA A inta classB A B Strings 编译不能通过 ConstructCallThisAndBase cs 域的初始化 域的初始化中不能引用this在base被调用之前不能引用this classB A intx 1 intM return1 inty x M ErrorB base x Error 构造方法的执行过程 执行过程若有this 转向之执行域的初始化转到base执行方法体应避免在构造方法中调用任何虚方法 ConstructorExecution cs 静态构造方法 静态构造方法总是在该类的所有静态域初始化之后执行 静态构造方法总是在该类被使用 如访问静态域 生成实例 之前完成 静态构造方法最多被执行一次 静态构造方法的执行顺序的不确定性 所以在使用构造方法时应谨慎应尽量避免在静态初始化或静态域中出现循环引用的情况 staticinta b 1 staticintb a 1 析构方法 析构方法 类名 析构方法会自动调用父类的构造方法注 编译器生成的构造方法名字为ctor 生成的析构方法名字为Finalize 不能显式地调用析构方法 自动垃圾回收 垃圾回收 garbagecollection 自动回收 强制 回收System GC Stringa b a String Copy helloworld b String Copy gameover Console WriteLine a b ok a null a b returna 显式资源管理 实现IDisposable接口其中有方法 voidDispose 使用using语句 Rr1 newR try r1 F finally if r1 null IDisposable r1 Dispose using Rr1 newR r1 F 小结 类型与转换asboxing变量及其传递按值outrefparams多态与虚方法调用abstract virtualoverride动态类型确定typeofis 反射对象构造与析构构造顺序IDisposableusing 6 csharp语言新特性 C 2 0引入泛型C 3 0引入Lambda及LinqC 4 0更多的动态特性dynmaic 泛型 Generic Listbooks newList Bookbook books 0 以前要用强制类型转换ArrayListbooks newArrayList Bookbook Book books 0 常用的泛型的delegate Func多个参数FuncAction多个参数ActionPredicateComparisonConverterEventHandler 匿名方法 delegate 参数 方法体 可以当一个匿名方法newThread newThreadStart delegate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品牌与价格关联性-洞察及研究
- 部队交通安全培训内容课件
- 河南省南阳市镇平县2024-2025学年八年级下学期3月月考生物学试题(含答案)
- 20xx建设承诺书4篇
- 【2025年秋七上语文阶段测试】第3单元学业质量评价01(解析版)
- 山东省2025年普通高校招生网上报名信息表
- 车险销售原理课件
- 基于区块链的分离式墨盒供应链溯源系统构建瓶颈
- 城市更新浪潮中商务综合体功能迭代与社区服务融合的设施适配性
- 国际奢侈品赛道中东方纹样溢价权争夺的定价权困局
- IInterlib区域图书馆集群管理系统-用户手册
- EnglishDrama英语戏剧写作及表演技巧课件
- DB11T 827-2019 废旧爆炸物品销毁处置安全管理规程
- 社会组织管理概论全套ppt课件(完整版)
- 轧机设备安装施工方案
- DB31∕T 926-2015 城镇供水管道水力冲洗技术规范
- (完整版)IATF16949新版过程乌龟图的编制与详解课件
- 制药企业仓库温湿度分布的验证
- 满堂脚手架工程施工方案
- LY∕T 2705-2016 樟脑磺酸
- GB∕T 3099.4-2021 紧固件术语 控制、检查、交付、接收和质量
评论
0/150
提交评论