【发布时间】:2014-01-18 00:29:26
【问题描述】:
我有课。这个类要表示的事物是这样的,我们可以说这些事物是彼此相等的,我们也可以想出一个方案来对它们进行排名用于比较。
然而,很少有人觉得需要对这些事物进行排名,但人们经常需要检查两个这样的事物是否相等。
所以,我可以为我的班级实现IEquatable 以及IComparable。虽然IComparable 提供了一些额外的功能,但不太可能有人会关心这些额外的功能。两者似乎都没有提供明显的优势,无论是逻辑上还是功能上。
我应该实现哪个接口,IEquatable、IComparable,还是两者都实现?为什么? (我特别想知道任一接口对框架范围的影响)
This question 类似,但答案只说明了显而易见的,这对我没有帮助。
如果您想知道,该类旨在表示一个核苷酸。核苷酸可以很容易地等同起来,但也可以进行比较(例如按字母顺序)。
【问题讨论】:
-
是否有可能需要对它们进行排序?我知道您说过这不太可能,但如果您要将课程交给其他人,您能想出他们需要排序的原因吗?
-
我敢肯定,有可能想出一个人为的场景,其中可能需要按字母顺序对它们进行排序(以产生具有良好格式的人类可读输出),或者可能通过某些生化特性对它们进行排序(如质量)。但这是人为的,如果我要实现
IComparable,我将不得不为很少使用的方法编写文档(没有它,该方法将毫无用处)。