==、Equals 、ReferenceEquals它们的异同

链接

string foobar = "foobar";
string foobar2 = new StringBuilder().Append("foo").Append("bar").ToString();

var k = foobar2 == foobar;//true  比较的是2个引用类型的值是否相等
var b = System.Object.ReferenceEquals(foobar, foobar2);//false比较的是内存的引用
var p = foobar.Equals(foobar2);//true 比较是2个引用类型的引用是否相等

一:Object.ReferenceEquals

与不同Equals方法和相等运算符,ReferenceEquals不重写方法。ReferenceEquals方法。

ReferenceEquals方法尽管如此返回false

ReferenceEquals方法返回true

Object.Equals

 引用相等性意味着进行比较的对象变量引用同一个对象。

(Object)方法测试值是否相等

Object.ReferenceEquals 和Object.Equals

第一个是引用比较,第二个就是比较两个对象是否相同.
区别是,第一个肯定是比较引用的,所以无法被重写,只要是两个new出来的对象,那么肯定是false
而第二个则允许对象重写比较函数,默认是比较引用(同前一个一样),但对象重写后,可以实现自己的比较规则,也就是比较内容是否相同.