假设我们有两个对象 o1 和 o2 定义为 System.Object,在我的情况下,o1 和 o2 可以是以下任何类型:
- String
- Int32
- Double
- Boolean
- DateTime
- DBNull
那么我如何检查 o1 和 o2 是否相等,因此是相同的对象或两者具有相同的类型和值。
我可以这样做吗o1 == o2
或者我需要做什么o1.Equals(o2)
或者是其他东西?
Thanks,
AJ
我建议你使用
object.Equals(o1, o2)
因为这也可以解决无效问题。 (假设您希望两个空引用比较相等。)
你应该not use ==
因为运算符不是多态应用的;类型overload==但他们没有override它(没有什么可以覆盖的)。如果你使用
o1 == o2
这将比较它们参考身份,因为变量被声明为类型object
.
Using o1.Equals(o2)
将工作except在这种情况下o1
为 null - 此时它会抛出一个NullReferenceException
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)