这不是关于如何实现的问题,而是关于这个方法的目的是什么?我的意思是 - 好吧,我明白在搜索时需要它,但为什么它被埋藏在“object”类的一个方法中呢?
故事是这样的 - 我有一些默认情况下(在逻辑上)不可比较的对象。每次你想要比较/搜索它们时,你都必须指定匹配方式。在这种情况下最好的方法是:
1. 没有像Equals这样普遍的方法,问题解决了,没有程序员(我的类的用户)会因忽略搜索时的自定义匹配而陷入困境。
但由于我不能更改C#,所以...
2. 隐藏继承的、不需要的方法以防止调用(编译时),但这也需要对C#进行更改。
3. 覆盖Equals并抛出异常 - 至少程序员在运行时得到通知。
所以我问这个问题是因为我被迫使用丑陋的(c),因为(b)不可能并且缺乏(a)。
简而言之,强制所有对象可比较(Equals)的原因是什么?对我来说,这是一个太过假设的前提。非常感谢您的启示。
故事是这样的 - 我有一些默认情况下(在逻辑上)不可比较的对象。每次你想要比较/搜索它们时,你都必须指定匹配方式。在这种情况下最好的方法是:
1. 没有像Equals这样普遍的方法,问题解决了,没有程序员(我的类的用户)会因忽略搜索时的自定义匹配而陷入困境。
但由于我不能更改C#,所以...
2. 隐藏继承的、不需要的方法以防止调用(编译时),但这也需要对C#进行更改。
3. 覆盖Equals并抛出异常 - 至少程序员在运行时得到通知。
所以我问这个问题是因为我被迫使用丑陋的(c),因为(b)不可能并且缺乏(a)。
简而言之,强制所有对象可比较(Equals)的原因是什么?对我来说,这是一个太过假设的前提。非常感谢您的启示。
IEquatable
类型,它只涉及对象的术语-但这仍然不意味着它必须是System.Object的一部分。 - Jon Skeet