zoukankan      html  css  js  c++  java
  • 9.了解四个相等判断的用法

    Object.ReferenceEquals(Object left,Object right) :判断两个对象的ID是否相同。

    Object .Equals(Object left,Object right):当不知道两个对象的类型时判断这两个对象是否相同,它是原理是基于“==”和第一个对象的Equals()。

    实例的Equals(Object right)方法:

       原则是不管什么时候,在创建一个值类型时重载Equals()方法,并且你不想让引用类型遵从默认引用类型 的
        语义时也重载Equals(),就像System.Object定义的那样 。当你写你 自己的Equals() 时,遵从要点里实现的内
        容。重载Equals()就意味着你应该重写GetHashCode()

      标准模式:

     public class Foo
        {
         public override bool Equals( object right )
         {
          // check null:
          // the this pointer is never null in C# methods.
          if (right == null)
           return false;

          if (object.ReferenceEquals( this, right ))
           return true;

          // Discussed below.
          if (this.GetType() != right.GetType())
           return false;

         // Compare this type's contents here:
            return CompareFooMembers(
             this, right as Foo );
          }
         }

    另一种方法是派生类的Equals中都调用基类的Equals.

    给了你 4 种方法来检测相等性,但你只须要考虑为其中两个提供你 自己的方法。你决不应该重载静态 的 
       Object.ReferenceEquals()和静态 的Object.Equals(),因为它们提供了正确的检测,忽略运行时类型 。你应该
       为了更好的性能而总是为值类型实例提供重载的Equals()方法和操作符==() 。当你希望引用类型 的相等与对
       象ID 的相等不同时,你应该重载引用类型实例 的Equals()

  • 相关阅读:
    用nodejs的express框架在本机快速搭建一台服务器
    Python版求数组的最大连续区间
    简洁的python测试框架——Croner
    中国有嘻哈——押韵机器人
    服务端测试环境hosts配置检查脚本
    手机客户端软件测试用例设计模板
    【Tomcat】压力测试和优化
    【Tomcat】详解tomcat的连接数与线程池
    【RabbitMQ】2、心得总结,资料汇总
    【高并发解决方案】7、HAProxy安装和配置
  • 原文地址:https://www.cnblogs.com/movemoon/p/2735643.html
Copyright © 2011-2022 走看看