昨天我问过使用重载运算符而没有人提到它很常见,经常用来检查字符串,颜色等两个对象的公平性。
同样在这种情况下,如果我的类型代表了一些可以检查其字段等值的对象,那么重载==是正确的。当然,我并不是要检查变量是否指向同一个对象。
答案 0 :(得分:2)
是的,当然重载==
运算符(和!=
)是合理的。
你需要知道它是重载而不是覆盖,所以如果你曾经有过:
object first = ...;
object second = ...;
if (first == second)
将检查引用的相等性,无论你做了什么。
答案 1 :(得分:1)
你基本上可以自己决定股权的含义。如果某些字段是相同的,那么请确保检查。
答案 2 :(得分:1)
在我看来,最好使用==来检查引用相等性,并使用.Equals(Object obj)来实现自定义相等。
通过这种方式,您将有两种比较方式,而不是一种。
无论如何请记住,如果重新定义Equality,则应重新定义GetHashCode(),以便两个相等的对象返回相同的哈希码。
答案 3 :(得分:0)
不太确定你的问题是什么,因为你似乎已经自己回答了问题。 您可以重载operator == etc来检查两个对象是否相同,因此在您的字符串或颜色示例中,两个字符串具有相同的实际内容,或者两个颜色具有相同的RGB值。正如您所说,这与指向同一对象的两个变量不同。 您可能需要查看MSDN部分
有关重载的更多信息。
包含更多信息的类似问题,包括您可以重载的运算符列表: why C# not allow operator overloading?