zoukankan      html  css  js  c++  java
  • 比较两个对象是否为同一个对象

    总结:

    对于对象:

    当判断两个对象时,使用== 、对象名.Equals()、object.ReferenceEquals(对象一,对象二);都可以。不过需要注意的是: Equals()方法和==方法容易被某个类重写,那么这样在使用它们判断两个变量是否为一个对象就不是很合理。

    对于字符串:

        字符串名.Equals()和 ==方法是判断两个字符串之间的内容是否相同。

        而object.ReferenceEquals()是判断两个对象的堆地址是否相同。

        注意:对于如下代码:

        string str1=new string();

        string str2=new string();

        对于上面的str1和str2来说,他们是不是同一个对象,因为一旦使用new 关键字,就会在内存中开辟一个新的空间;

        而对于如下代码:

        string str="liqianlong";

        string str="liqianlong";

        对于上面的str1和str2来说,它们是同一个对象,因为他们的堆地址相同。

        其中:字符串中的Equals()方法的内部结构为:

        

                图一                     图二

    图一是string类继承自object类中的Equals(),将其重写之后的方法。

    图二是string类重载Equals()方法的内部结构

    图一和图二先是判断两个对象是否为同一个对象,如果为同一个对象,那么就说明它们的内容一样。

    因此,为了保险起见,一般都使用object.ReferenceEquals()这个方法最为合适比较两个对象是否为同一个对象。

  • 相关阅读:
    关掉firefox(火狐)和palemoon地址栏自动加www.前缀功能【转】
    Maven入门指南(一)
    Linux 常用命令
    maven-编译速度优化
    monkeyscript
    GIT
    maven简介及基础使用
    使用xcrun打包iOS应用
    Mac系统下STF的环境搭建和运行
    npm介绍与cnpm介绍
  • 原文地址:https://www.cnblogs.com/taidou/p/4677498.html
Copyright © 2011-2022 走看看