ReferenceEquals, == , Equals ReferenceEquals是Object的静态方法,用于比较两个引用类型的对象是否是对于同一个对象的引用。对于值类型它总是返回false。(因为Box以后的对象总是不同的,hehe) == 是一个可以重载的二元操作符,可以用于比较两个对象是否相等。 Int a = 100; Double b =100; If (a == b) { Console.WriteLine(“equal supports compare between different types!”); } // 上面这段程序将会输出: // equal supports compare between different types! // 而对于用户定义的值类型,如果没有重载==操作符,==将是不能够使用的。例如: Struct Userstruct1; Userstruct1 a; Userstruct1 b; If (a == b) { Console.WriteLine(“can == reach this far?”) ; } 上面的这段代码是不能够通过编译的。可以通过重载使==作用于用户定义的值类型。
Equals 作为Object内置方法,Equals支持对于任意两个CTS(Common type system) 对象的比较。 Equals它有静态方法和可重载的一个版本,下面的程序片断解释了这两个方法的用法,
事实上,这两个版本的结果完全相同,如果用户重载了Equals,调用的都是用户重载后的Equals。Equals的静态方法的好处是可以不必考虑用于比较的对象是否为null。
|
ReferenceEquals,==,Equals比较【转】
轻轻的总结一下:
【1】ReferenceEquals 比较引用
【2】== 对于值类型比较值,对于引用类型比较引用
【3】Equals 对于值类型比较类型、值,对于引用类型比较引用