本文共 800 字,大约阅读时间需要 2 分钟。
1、比较对象的相等性
1) 比较引用类型的相等性
(1) ReferenceEquals()方法
ReferenceEquals()是一个静态方法,测试两个引用是否引用类的同一个实例,特别是两个引用是否包含内存中的相同地址。作为静态方法,它不能重写,所以System.Object的实现保持不变。如果提供的两个引用同一个对象实例,则ReferenceEquals()总是返回true;否则就返回false,但是它认为null等于null;
SomeClass x,y;x=new SomeClass();y=new SomeClass();bool B1=ReferenceEquals(null,null); //returns truebool B2=ReferenceEquals(null,x); //returns falsebool B3=ReferenceEquals(x,y); //returns false because x and y //point to different objects
(2)虚拟的Equals()方法
Equals()静态版本与其虚拟实例版本的作用相同,其区别是静态版本带来两个参数,并对他们进行相等性比较。这个方法可以出来两个对象中有一个是null的情况,若一个对象可能是null,这个方法就可以抛出异常,提供额外的保护。静态重载版本首先要检查传递给它的引用是否为null。如果他们都是null,就返回true(因为null与null相等)。如果只有一个引用是null它就返回false。如果两个引用实际上引用了某个对象,它就调用Equals()的虚拟实例版本。相当于重写Equals()的实例版本时,其效果相当于也重写静态版本。
参考:
C#高级编程
转载地址:http://zuco.baihongyu.com/