比如
class Person 
{}Person p1=new Person()
Person p2=new Person()请问object.Equals(p1,p2)实际比较的是什么呢?p1.ToString()与p2.ToString()吗?

解决方案 »

  1.   

    第一步是需要根据对象所属类型的==操作符的执行结果;
    第二步是判别是否为null,也是和第一步一样,需要根据类型的==操作符的执行结果;
    最后一步要使用到类型的Equals函数的执行结果。你的Person类未重写Equals方法的话  这样的比较是没有意义的
    http://developer.51cto.com/art/200907/140858.htm
      

  2.   

    比他们的的引用。如果都指向同个对象就返回ture
      

  3.   

    object.Equals(p1,p2)这个函数的原型为:    public static bool Equals(object objA, object objB)
        {
          return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
        }
    故首先比较的是,是否为同一个实例;
    其次比较的是InternalEquals,而InternalEquals原型为
        [MethodImpl(MethodImplOptions.InternalCall)]
        internal static extern bool InternalEquals(object objA, object objB);
    应该是运行时看你的 Person  是否重写了Equals方法。
    而重写这个方法,就是要看你自己的意愿了,你可以让姓名相同就return true
      

  4.   

    你应该在类中重载equals方法,然后将p2传进来比较两个类中的变量是否相等。
      

  5.   

    貌似这个比较是Object.ReferenceEquals