- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.NET程序设计.NET Programming 西电软件学院 邓岳 anfdeng@ Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 类型基础 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. CLR的单根体系 所有类型必须最终从System.Object派生 以下两种定义方法等价 class Employee { …} class Employee : System.Object {… } Object类提供的常用方法(类似Java) Equals GetHashCode ToString GetType MemberwiseClone Finalize Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. System.Object类的public方法 Equals:默认实现“同一性”检查 所有值类型的基类 System.ValueType 都已重写了Equals以实现“相等性”检查 GetHashCode:返回this对象的值的一个哈希码 ToString 默认返回完整名称 this.GetType().FullName() GetType 标识调用GetType方法的对象的类型,返回由System.Type类派生的对象实例,可从中获取与类型有关的元数据 能否通过重写此方法伪装为另一个类? Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. System.Object类的protected方法 MemberwiseClone 创建新的实例,新实例的各个字段的值都设为与this对象对应字段的值相同 返回新实例的引用 Finalize 垃圾回收时,对象的内存被实际回收之前调用 注:Java的Object类也提供 hashCode、equals、clone、toString 等11个方法 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. new CLR要求所有对象都要用new操作符创建 Employee e = new Employee(“Bob”) 无delete操作符,由CLR负责垃圾回收 1. 计算类型及所有基类型(上溯至Object)中定义的所有实例字段需要的字节数(要加上一些额外成员如type object pointer、sync block index的大小) 2. 从托管堆中分配类型所需字节数 3. 初始化额外成员 4. 调用类型构造函数 5. 返回新创建的对象的引用 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 强制类型转换 GetType方法可以返回该对象的类型 该方法非虚,故类型无法伪装为另一种类型 将一个对象强制转换为其基类型时,不需要特殊语法,但转换为其派生类时需要显式进行转换(Liskov替换原则) class Employee {…} // 隐式从Object派生 class Program { public static void Main() { Object o = new Employee(); // 不需要转型 // C#需要强制转换,其他语言未必需要 Employee e = (Employee) o; } } Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. class Employee {...} class Manager : Employee {..
文档评论(0)