文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>迷惑的C#中的Object.Equals静态方法

迷惑的C#中的Object.Equals静态方法

时间:2011-05-25  来源:leipei

原文发表于 2008-07-30 23:06:34 在我的网易博客,后被我删掉(主要是想把网易博客上的技术相关的文章都搬过来)
      最近一直在看<Pro c# with .NET 3.0, Special Edition>,第三章3.18.5节中讲述了System.Object的静态成员的Equals方法和ReferenceEquals方法,按照这本书的说法,Object.Equals(Object1,Object2)是用来比较两个对象(属于同一类型)的状态是否相同.下面是其举例:
    Person person3=new Person("Fred","Jones","222-22-2222",98);
    //Person 类有4个属性:fName(String),lName(String),SSN(String),age(byte)
    Person person4=new Person("Fred","Jones","222-22-2222",98);
    按照其说法,person3和person4有相同的状态,因此,object.Equals(person3,person4)的返回值应该是True,然而,我在Visual studio 2005中编译后得到的结果却是:False.真是叫人很吃惊.后来我在网上查了一下object.Equals方法,一篇文章这样写:
    用反编译工具反编译System.dll得到方法的实现源码:
    public static bool Equals(object objA, object objB)
    {
          if (objA == objB)
         { return true; }
         if ((objA != null) && (objB != null))
         { return objA.Equals(objB); }
        return false;
     }
    可以看到,两个对象是否Equals,就要看其用等号判断的值是否相等.而等号判断两个对象是否相等是看他们两个对象是否有相同的引用(是否指向的是内存中的同一个对象的位置).虽然两个对象状态相同,但是,并没有指向内存中相同区域,不属于相同引用.因此返回值是False.

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载