zoukankan      html  css  js  c++  java
  • 温故知新 C# Equals ReferenceEquals ==

    System.Object类中的Equals和ReferenceEquals方法

    public virtual bool Equals(object obj)
    {
        
    return RuntimeHelpers.Equals(this, obj);
    }

    public static bool Equals(object objA, object objB)
    {
        
    return ((objA == objB) || (((objA != null&& (objB != null)) && objA.Equals(objB)));
    }

    public static bool ReferenceEquals(object objA, object objB)
    {
        
    return (objA == objB);
    }

    其中Equals有两个重载,一个是虚方法,一个是静态方法

    静态的Equals内部做判定处理,调用虚方法Equals.

    (1)对于引用类型

      这三种比较方式都是对引用进行比较

      当RefrenceEquals(null,null)两个参数都为null时,返回的是True

    (2)对于值类型

      Equals:用于对实例数据进行对比(System.ValueType重载了Object.Equals,实现对实例数据进行判等)

      ==:如果再没有重载的情况下,是按位进行对比的

      ReferenceEquals:返回的都是false

    所以,当是值类型时,ReferenceEquals返回的都是false,而Equal和==根据值类型的类型和值进行比较,

  • 相关阅读:
    硬件调试软件
    ICMP(Internet Control Message Protocol)
    算法网站
    下载安装
    netcat 实现端口转发
    mqtt 连接工具
    Linux(CentOS7)安装zip、unzip命令
    awk 两个字符串互换位置
    创建一个swift项目
    屏幕录制
  • 原文地址:https://www.cnblogs.com/_dragon/p/2096347.html
Copyright © 2011-2022 走看看