zoukankan      html  css  js  c++  java
  • c# == 和equals()的差异

    那么这两者的区别在哪里呢?

    1.==在比对值类型时,如果二者值相等,则返回true,否则返回false。

    2.==在比对引用类型时,如果二者引用的是同一个对象,则返回true,否则返回false。

    3.Equals()方法,在不重写的情况下,与==没区别。

    4.微软重写了string的Equals()方法,使得这个方法比对的是string的字符串内容,同时也重载了==运算符,使得string在进行==比对时,得到的结果与Equals()相同,即比对字符串内容(这点区别于Java)

    但是,是否只有string的Equals得到了重写?让我们看看下面这段代码和它的运行结果——

    在将值类型的数据赋值给object类型的变量时,发生了装箱操作:对值类型装箱会在堆中分配一个对象实例,并将该值复制到新的对象中。

    因此,a 和 b引用了堆上的两个不同对象,==返回了false。

    那么,为什么Equals()比对会返回true?按照之前的说明:Equals()方法,在不重写的情况下,与==没区别。Equals()返回的应该也是false才对。

    原因就在于,a.Equals(b)所调用的Equals(),不是object的那个与==没区别的Equals(),而是Int32中重载过的Equals()。

    这个重载过的Equals()返回了与==不同的结果。

  • 相关阅读:
    myBatsi调用存储过程
    Db2与Oracle的区别
    动态SQL与模糊查询
    一对多联表查询
    一对一联表查询
    025 资源的隔离与配置
    024 Yarn核心生态系统
    sift算法特征点如何匹配?
    Camera 图像处理原理分析
    基于灰度世界、完美反射、动态阈值等图像自动白平衡算法的原理、实现及效果
  • 原文地址:https://www.cnblogs.com/eve612/p/13707633.html
Copyright © 2011-2022 走看看