《.NET框架程序设计》第六章 通用对象操作

转载 2004年09月02日 20:10:00

一、对象的唯一性识别:即判断两个引用是否指向了同一个对象?可以使用”= =” 操作符来比较两个引用,也可以使用System.ObjectReferenceEquals的静态方法。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

二、对象的散列码:每一个对象都有一个Int32类型的散列码,这样任何对象实例就都能被放入一个散列表集合中。

三、对象克隆:如果一个类希望自己的实例能够被克隆,则该类应该实现ICloneable接口。并在接口的Clone方法中实现拷贝的语法。

四、浅拷贝:当对象的字段值被拷贝时,字段引用的对象不会被拷贝。

深拷贝:对对象实例中字段引用的对象也进行拷贝。对于对象实例字段引用的对象中又引用的对象……都要进行拷贝。也就是说,执行深拷贝后,原来的对象和新创建的对象不会共享任何东西;改变一个对象对另一个对象没有任何影响。

五、浅拷贝和深拷贝的实现:如果希望对象的实例实现浅拷贝,可以在对象的Clone方法中调用System.Object的受保护方法MemberwiseClone即可。注意:MemberwiseClone      方法不会为新对象调用构造器,值类型实例本身就支持浅拷贝。如果要实现深拷贝,则需要在我们的引用类型或者值类型的Clone方法中自己实现(当然,先要实现ICloneable接口)。因此,一个对象的Clone方法,即可能是浅拷贝,也可能是深拷贝,具体要看这个对象的说明文档。

六、对象相等:System.Oject类型中Equals方法的实现是比较两个引用是否指向同一个对象,如果我们需要判断的是两个对象是否有相同的"",则必须重写Equals方法。如果我们定义的类型的基类型没有继承Object.Equals方法的实现(即基类型也重写了Equals方法),那么我们在重写Equals方法时应该先调用基类型的Equals方法。

七、Equals方法的两种形式:System.Object类型中的Equals方法有两种形式:

虚函数形式public virtual bool Equals(object);--它使得各个对象可以重写这个方法。

静态函数形式public static bool Equals(object, object);

--它可以保证在某个对象参数为null时,也不会抛出异常。

八、引用类型和值类型的Equals方法的不同:引用类型继承的Equals判断的是引用相等;而值类型继承的Equals判断的是值相等。

九、对象的GetType方法返回的始终是对象的原始类型:对于包装了一个父类外衣的子类对象,调用它的GetType方法,返回的类型依然是子类类型。

十、子类一定也与父类的类型相兼容:is操作符在判断一个对象与它的任何一个基类型之间的关系时,都返回true

十一、       当父类函数和子类函数重名时,构造函数和一般函数的执行上的不同:当初始化一个子类时,会自动的按照继承的顺序,从父类向子类逐一执行各类的构造函数。而如果父类和子类都有同一个函数(不是构造函数),则不会自动调用父类的同名函数。

.Net框架程序设计-读书笔记(第六章 通用对象操作)

1. 通用对象操作1.1. 对象的等值性与唯一性System.Object类型中的Equals方法实现:class Object{    public virtual Boolean Equals(O...
  • baoxuan
  • baoxuan
  • 2006-05-29 11:22:00
  • 583

Microsoft .NET框架程序设计.pdf_中文清晰版

  • 2014年01月06日 19:51
  • 40.72MB
  • 下载

【javascript高级程序设计】读书摘录3 第六章、面向对象

第六章、面向对象的程序设计     这一章应该是Javascript中最抽象的一章,其中原型、原型链、构造函数等多次出现,几乎贯穿了整个章节。而对于创建对象和继承,也都是基于原型和构造函数而来的。因...
  • ohmygirl
  • ohmygirl
  • 2015-04-08 23:45:32
  • 1693

.NET框架程序设计——体系结构

谈到.NET,相信对于大多数初学者而言,都会感觉比较乱、比较迷茫,什么ASP.NET、VB.NET、VC.NET、ADO.NET、.NETFramework 等等概念,搞的我们晕头转向的,他们之间到底...
  • dongyue786
  • dongyue786
  • 2014-10-15 15:47:13
  • 2109

终于把Microsoft .NET框架程序设计(修订版)看完了

这本书是由windows & .Net专家Jeffrey Richter写的,现在最新的是第二版CLR Via C#。虽然内容差不了多少,不过俺还是买了。:D。此书由李建忠老师翻译的。   Jeff...
  • kisserLeon
  • kisserLeon
  • 2006-11-28 19:09:00
  • 2088

C++程序设计基础课后答案 第六章

  • 2010年05月29日 09:49
  • 55KB
  • 下载

Java 语言程序设计(基础篇)原书第五版第六章编程题答案

  • 2008年11月06日 21:18
  • 13KB
  • 下载

java程序设计基础_陈国君版第五版_第六章例题

java程序设计基础_陈国君版第五版_第六章例题 class Cylinder { double radius; int height; double pi = 3.14; void are...
  • gaoenbin626
  • gaoenbin626
  • 2016-03-08 20:25:31
  • 1265

.net框架程序设计读书笔记二(Microsoft .net 框架开发平台体系架构)

第一章:Microsoft .net 框架开发平台体系架构    本章的目标:对.net框架体系架构有一个总体的认识,并对.net框架中出现的一些新的技术和术语有一个基本的了解。 1.1 将源代码编译...
  • cwbboy
  • cwbboy
  • 2004-05-31 16:57:00
  • 1061

C#.NET程序设计 练习题

第一章编程和C#简介1、下面的例子中不是对象的 是            A  窗体   B 颜色    C 按钮   D 输入框2、一个C#应用程序称为一个      ,它由一个或多个项目组成。  ...
  • proglovercn
  • proglovercn
  • 2007-01-19 14:33:00
  • 3482
收藏助手
不良信息举报
您举报文章:《.NET框架程序设计》第六章 通用对象操作
举报原因:
原因补充:

(最多只允许输入30个字)