- 主题:请教一个基本的问题
如何比较两个object是否相等?就是如果是值类型,判断值是否一样,如果是引用类型,判断是否指向同一个对象。
--
FROM 223.104.235.*
object1 == object2; // but if "==" is overloaded by either object, the overloaded one will be called.
object.Equals(object1, object2); // no overloading happens here.
【 在 ChangQiang 的大作中提到: 】
: 如何比较两个object是否相等?就是如果是值类型,判断值是否一样,如果是引用类型,判断是否指向同一个对象。
--
FROM 183.95.135.*
多谢!
【 在 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 223.104.175.*
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的值相当?
【 在 keygen 的大作中提到: 】
: object.Equals 不行
: 调用 object.Equals(o1, o2),实际上相当于先判断两个是不是 null,然后调用 o1.Equals(o2), o1 的 Equals 被重载它一样被影响。
: 用 object.ReferenceEquals(o1, o2)
: ...................
--
FROM 183.95.135.*
ValueType 重写了 Equals 方法
【 在 a0123456789q (a0123456789q) 的大作中提到: 】
: 但这个怎么判断ValueType的值相当?
--
FROM 113.119.137.*