我有一个实现IComparable的自定义类.该类存储在通用列表中.我现在需要与列表进行比较,以查看哪些对象在列表A中但不在列表B中.
我认为最简单的方法是迭代列表B并执行A.contains().
我不知道如何使用我的CompareTo()(或我可以覆盖的其他方法,以便我可以说它是否包含某个对象).我可能是错的,但据我所知,包含检查对象实际上是否相同(即指向内存中的相同位置).
有人可以帮帮我吗?
你为什么不直接覆盖Equals
你的类的方法与意义一致CompareTo(other) == 0
?这是最简单的方式,也是最惯用的方式,因为正如您所注意到的那样,Contains
比较平等而非使用CompareTo
.但是,这项检查是通过Equals
.它并不会检查对象是否指向同一个内存位置.
/编辑:此外,如果您使用的是.NET 3.5,则可以使用Contains
接受IEqualityComparer
参数的重载.您可以使用它来提供实现类类型的自定义相等关系的类.但是,我认为第一种方法更适合您的情况.