《.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框架程序设计——体系结构

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

java语言程序设计基础篇第六章编程练习题

1 import java.util.Scanner; public class Main{ public static void main(String[] args){ final int...
  • gyhguoge01234
  • gyhguoge01234
  • 2016年07月05日 22:26
  • 3934

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

java程序设计基础_陈国君版第五版_第六章习题class Student{ int ID; String name; String sex; boolean leader; float g...
  • gaoenbin626
  • gaoenbin626
  • 2016年03月09日 10:27
  • 3073

JS高级程序设计读书笔记(第七章)

函数表达式定义函数有两种方式:一种是函数声明,另一种就是函数表达式//1,函数声明 function functionName(arg0, arg1, arg2){ //函数体 } /...
  • didiaidada
  • didiaidada
  • 2015年09月22日 16:56
  • 302

[.net 面向对象程序设计深入](26)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1)

1,关于IOC模式  先看一些名词含义: IOC: Inversion of control 控制反转,简称 DI: Dependency Injection 依赖注入,简称 ...
  • duzanuolu
  • duzanuolu
  • 2017年03月18日 17:12
  • 189

Java通用程序设计与集合方法总结

一.  equals() VS “==”     equals() 通常用来比较两个引用所指向的对象的内容是否相等;而 “==”通常比较的事两个引用所指向的对象是否为同一个对象,即是否引用了同一个内存...
  • gaoxueyi551
  • gaoxueyi551
  • 2013年03月16日 23:20
  • 1997

.NET通用的数据库操作类(支持多种数据库)

通用的数据库操作类(支持多种数据库)       我们在软件开发过程中,数据库是一个永久不变的话题,但是根据软件架构与客户要求的不同我们会选择不同的数据库,在C#中不同数据库操作编写代码不尽相同...
  • qq798833488
  • qq798833488
  • 2016年05月13日 11:02
  • 4402

.NET操作Excel免费开源类库简介及比较

自从上次找到NPOI之后,根据园友提供的线索以及Google,又找到了一些开源免费的类库,所以都简单体验了一遍。 主要找到以下类库: MyXls(http://sourceforge.net/pr...
  • sven_xu
  • sven_xu
  • 2015年06月02日 09:18
  • 1238

面向对象程序设计的基本概念和特征

面向对象程序设计的基本概念 1. 对象 对象:面向对象程序设计的基本单元。 一个对象应当具有属性和行为两个要素。 - 属性:描述静态特征 - 行为: 描述动态特征。...
  • zfchen819
  • zfchen819
  • 2016年05月06日 01:13
  • 1346

第六章:面向对象的程序设计

面向对象:OO(Object-Oriented) 对象:一组没有特定顺序的值,可以是数据或函数 6.1理解对象 最简单: var person=new Object(); perso...
  • qq_28726715
  • qq_28726715
  • 2016年04月19日 00:01
  • 209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《.NET框架程序设计》第六章 通用对象操作
举报原因:
原因补充:

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