• ==、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不重写方法。 因此,如果你想要测试两个对象是否相等的引用和你不确定的实现Equals方法时,你可以调用ReferenceEquals方法。

    比较值类型。 如果objAobjB是值类型,它们先它们传递给装箱ReferenceEquals方法。 这意味着,如果这两个objAobjB表示值类型,同一个实例ReferenceEquals方法尽管如此返回false

    当比较字符串。 如果objAobjB都是字符串,ReferenceEquals方法返回true

    二:Object.Equals

    如果当前实例是引用类型,Equals(Object)方法测试引用相等性,并调用Equals(Object)方法等效于调用ReferenceEquals方法。 引用相等性意味着进行比较的对象变量引用同一个对象。

    如果当前实例是值类型,Equals(Object)方法测试值是否相等

    Object.ReferenceEquals 和Object.Equals

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


  • 相关阅读:
    Pandas怎样按条件删除行?
    分享一个百度大牛的Python视频系列下载
    Python的几个高级编程技巧
    Pandas系列-读取csv/txt/excel/mysql数据
    判断质数
    mac命令行光标操作快捷键
    私有Docker部署GitLab重置管理员密码
    noip2012借教室
    乘法逆元
    noip2008T2 火柴棒等式
  • 原文地址:https://www.cnblogs.com/xiaoyaodijun/p/7372766.html
Copyright © 2020-2023  润新知