- 主题:请教一个基本的问题
object.Equals 不行
调用 object.Equals(o1, o2),实际上相当于先判断两个是不是 null,然后调用 o1.Equals(o2), o1 的 Equals 被重载它一样被影响。
用 object.ReferenceEquals(o1, o2)
【 在 a0123456789q (a0123456789q) 的大作中提到: 】
: object1 == object2; // but if "==" is overloaded by either object, the overloaded one will be called.
: object.Equals(object1, object2); // no overloading happens here.
--
FROM 59.41.69.*
呃,原来 object.Equals(o1, o2) 还是强依赖 ==
public static bool Equals(object? objA, object? objB)
{
if (objA == objB)
{
return true;
}
if (objA == null || objB == null)
{
return false;
}
return objA.Equals(objB);
}
https://source.dot.net/#System.Private.CoreLib/Object.cs,f2a579c50b414717
【 在 keygen (推石头的人) 的大作中提到: 】
: object.Equals 不行
: 调用 object.Equals(o1, o2),实际上相当于先判断两个是不是 null,然后调用 o1.Equals(o2), o1 的 Equals 被重载它一样被影响。
: 用 object.ReferenceEquals(o1, o2)
: ...................
--
FROM 59.41.69.*
ValueType 重写了 Equals 方法
【 在 a0123456789q (a0123456789q) 的大作中提到: 】
: 但这个怎么判断ValueType的值相当?
--
FROM 113.119.137.*