【发布时间】:2011-07-09 21:10:07
【问题描述】:
有人可以指出重载operator== 以执行深度对象比较的想法(而不是引用比较)。
来自 MSDN:
默认情况下,运算符 == 通过确定两个引用是否指示同一个对象来测试引用是否相等。因此,引用类型不必实现 operator == 即可获得此功能。当一个类型是不可变的,即包含在实例中的数据不能改变时,重载运算符 == 来比较值相等而不是引用相等可能很有用,因为作为不可变对象,它们可以被认为与 long 相同因为它们具有相同的价值。在非不可变类型中覆盖 operator == 不是一个好主意。
什么时候真正受益?
而且,如果每个对象都有方法Equals,这使得值比较成为可能,那么为什么有人会使用@987654323 执行值 (非引用)比较@声明?
我想我有些不明白,因为这对我来说很奇怪。
【问题讨论】:
标签: c# comparison equality