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和==根据值类型的类型和值进行比较,

  • 相关阅读:
    数据结构上机思考
    hdu1005,循环节
    网络赛总结
    icpc沈阳网络赛。cake cake!
    树的基础代码
    网络赛第一场
    欧拉函数
    欧拉函数
    多校第十场
    (环上)最大子段和
  • 原文地址:https://www.cnblogs.com/_dragon/p/2096347.html
Copyright © 2011-2022 走看看