比如
class Person
{}Person p1=new Person()
Person p2=new Person()请问object.Equals(p1,p2)实际比较的是什么呢?p1.ToString()与p2.ToString()吗?
class Person
{}Person p1=new Person()
Person p2=new Person()请问object.Equals(p1,p2)实际比较的是什么呢?p1.ToString()与p2.ToString()吗?
第二步是判别是否为null,也是和第一步一样,需要根据类型的==操作符的执行结果;
最后一步要使用到类型的Equals函数的执行结果。你的Person类未重写Equals方法的话 这样的比较是没有意义的
http://developer.51cto.com/art/200907/140858.htm
{
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