C#对象比较

Yip*_*Yay 2 c# comparison equality

有人可以指出重载的想法operator==来执行深度对象比较(而不是参考比较).

来自MSDN:

默认情况下,operator ==通过确定两个引用是否指示同一对象来测试引用相等性.因此,引用类型不必实现operator ==以获得此功能.当一个类型是不可变的,也就是说,实例中包含的数据不能改变时,重载operator ==来比较值的相等而不是引用相等可能是有用的,因为作为不可变对象,它们可以被认为是相同的因为它们具有相同的价值.在非不可变类型中覆盖operator ==不是一个好主意.

什么时候才真正受益?

并且,如果每个对象都有方法Equals,这使得值比较成为可能,为什么有人会使用语句执行 (而不是引用)比较x == y

我想我不明白,因为这对我来说很奇怪.

SLa*_*aks 6

重载==操作符允许您编写x == y,这比自然更自然x.Equals(y),并且即使x为null 也可以工作.