是== Equal()方法的快捷方式?

bAN*_*bAN 3 c# java equals

在Java语言中,我认为当您进行比较时Object1 == Object2;,默认情况下会比较对象的Hashcode,除非您重写了equal()方法,因为==比较器是等于方法的一种快捷方式.如果我错了请纠正我!

问题是,C#中是否相同?

Mar*_*ell 8

在C#中,==永远不要直接调用x.Equals(y)(除非你包括string.Equals(x,y)):

  • 对于某些内置类型,执行直接比较(ints等具有操作码)
  • 如果==定义了一个显式运算符,则调用该运算符
  • for Nullable<T>,应用"提升"规则,==如果两者都非空,则应用于值
  • 对于类,默认值是引用相等
  • 对于结构体,没有默认==实现