- 1、本文档共49页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
合肥工业大学2类型概述
因为.NET Framework中的所有类均从Object派生,所以Object类中定义的每个方法可用于系统中的所有对象。 派生类可以重写这些方法中的某些方法,包括: Equals — 支持对象间的比较。 引用相等—对象存储地址相等 成员相等—地址不同,成员相同 数值类型—类型同且值等 Finalize — 在自动回收对象之前执行清理操作。 GetHashCode — 生成一个与对象的值相对应的数字以支持哈希表的使用。 ToString — 生成描述类实例的可读文本字符串。 8、Object 如果要设计的类必须处理所有类型的对象,则可以创建接受Object类的实例的类成员。 但是,类型的装箱和拆箱的过程会增加性能开销。 如果知道新类将频繁处理某些值类型,则可以使用下列两种策略之一,以使装箱开销减至最少。 一种策略是创建一个一般方法和一组类型特定的重载方法;一般方法接受Object类型,重载方法接受类预期要频繁处理的所有值类型。 如果某个类型特定方法可接受调用参数类型,则调用该方法且无需装箱。如果调用参数类型与方法参数都不匹配,则对该参数进行装箱并调用一般方法 8、Object 另一种策略是将类及其方法设计为使用泛型。在创建类的实例并指定一个泛型类型参数时,公共语言运行时创建一个封闭泛型类型。 泛型方法是类型特定的,无需对调用参数进行装箱即可调用。 虽然有时必须开发可接受并返回Object类型的通用类,但也可以提供特定类型的类来处理常用类型,从而提高性能。 下面的示例定义一个派生自Object类的Point类型,然后重写Object类的很多虚方法。 此外,该示例还演示如何调用Object类的很多静态方法和实例方法。 8、Object using System; // Point类派生自System.Object. class Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; } public override bool Equals(object obj) { // 如果this和obj未指向同一类型,它们不相等 if (obj.GetType() != this.GetType()) return false; //如果x和y字段匹配,返回true Point other = (Point) obj; return (this.x == other.x) (this.y == other.y); } 8、Object //返回x和y字段的异或结果 public override int GetHashCode() { return x ^ y; } //以字符串形式返回point的值 public override String ToString() { return String.Format(({0}, {1}), x, y); } //通过简单的字段拷贝,返回point对象的拷贝 public Point Copy() { return (Point) this.MemberwiseClone(); } } 8、Object public sealed class App { static void Main() { //构造一个Point对象. Point p1 = new Point(1,2); // 制作另一对象,它是第一个的拷贝 Point p2 = p1.Copy(); //制作另一变量,它指向第一个Point对象 Point p3 = p1; //因为p1和p2指向不对象,下面行显示false. Console.WriteLine(Object.ReferenceEquals(p1, p2)); // p1和p2指向不对象,但其值相同,故下面行显示true Console.WriteLine(Object.Equals(p1, p2)); //因为p1和p3指向同一对象,下面行显示true. Console.WriteLine(Object.ReferenceEquals(p1, p3));
您可能关注的文档
最近下载
- 中国春节申遗成功ppt课件.pptx VIP
- 设备操作工考试试题及答案.docx VIP
- 青少年身体健康知识讲座.pptx
- AP化学 2013年真题 (选择题+问答题) AP Chemistry 2013 Released Exam and Answers (MCQ+FRQ).pdf VIP
- 步步高 HCD007(198)TSD电话 使用说明书.pdf
- 2025-2030年中国医用复合膜行业竞争格局及前景趋势预测报告.docx
- 标准图集-22J403-1 楼梯 栏杆 栏板(一).pdf VIP
- 婚姻登记务与管理.ppt
- SLT 618-2021 水利水电工程可行性研究报告编制规程.docx
- 项目现场生产与进度管控方案.pdf VIP
文档评论(0)