根据 MSDN : 大多数引用类型不得重载相等运算符,即使它们重写了 Equals。但是,如果您要实现旨在具有值语义的引用类型(例如复数类型),则必须重写相等运算符。
为客户等典型域实体实现等于方法和相等运算符的最佳实践是什么?
如果两个实体的身份相同,它是否应该实现equals 方法以返回true?如果实体不是不可变的怎么办?如果两个实体都是新的并且它们的身份具有空值怎么办。那么相等运算符呢?
最佳答案
来自 MSDN :
Most reference types must not overload the equality operator, even if they override Equals. However, if you are implementing a reference type that is intended to have value semantics, such as a complex number type, you must override the equality operator.
Microsoft 认为 == 应该只用于类似值的类型,例如Complex
、BigInt
等数字类型。Person
等复合类型不应覆盖相等运算符。这是代码风格的问题,Microsoft 乐于建议您遵循此准则。我怀疑编译后的结果会有很大不同。
关于c# - 为什么 Microsoft 建议跳过为引用类型实现相等运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8076143/