ang*_*son 26

请参阅覆盖Equals()和operator ==的指南.

引用:

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

基本上:

如果你想让==和!=表现得像Equals(..),!Equals(..)你需要实现运算符.您通常只使用不可变类型执行此操作.


Mat*_*lls 5

参见实施等于和平等算子的指南(==)

对于值类型(结构)"实现==任何时候覆盖Equals方法"

对于引用类型(类),"大多数引用类型,即使是那些实现Equals方法的类型,也不应该覆盖==." 例外是不可变类和具有类似语义的类.