关于引用类型的相等性比较,.NET中工提供了以下几种方式:
- static System.Object.ReferenceEquals()
- static System.Object.Equals()
- System.Object.Equals()
- 比较运算符(==)
ReferenceEquals
静态方法,比较两个引用是否指向类的同一个实例,特别是两个引用是否包含内存中的相同地址。可以比较null,认为两个null是相等的。
Equals虚方法
默认实现,也可以用来比较引用。可以重写,进而可以按照值来比较对象。
Equals静态方法
该方法与虚方法功能相同,其区别是静态版本带两个参数。
- 两个都是null,则返回true
- 只有一个是null,返回false
- 两个都非null,调用虚版本方法进行处理
比较运算符(==)
对引用(string除外)比较地址,对值比较内容