==、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
而第二个则允许对象重写比较函数,默认是比较引用(同前一个一样),但对象重写后,可以实现自己的比较规则,也就是比较内容是否相同.