.net对象相等

AJ.*_*AJ. 9 .net c#

假设我们有两个对象o1和o2定义为System.Object,在我的坐标中o1和o2可以是以下任何类型:

  • INT32
  • 布尔
  • 约会时间
  • 的DBNull

那么如何检查o1和o2是否相等,因此是相同的对象或两者具有相同的类型和值.

我可以做o1 == o2或者我需要做什么o1.Equals(o2)或其他什么?

谢谢,

AJ

Jon*_*eet 20

我建议你用

object.Equals(o1, o2)
Run Code Online (Sandbox Code Playgroud)

因为这也将应对无效.(假设您希望两个空引用比较相等.)

你应该使用==,因为运营商不采用多态; 类型重载 ==但它们不会覆盖它(没有什么可以覆盖).如果你使用

o1 == o2
Run Code Online (Sandbox Code Playgroud)

这将比较它们的参考标识,因为变量被声明为类型object.

使用o1.Equals(o2)将工作,除非o1null 的情况下- 此时它会抛出一个NullReferenceException.