我有一系列从IComparable
接口实施CompareTo
方法的类。如何实现这个特定的类层次结构?
public int CompareTo(CMNewsletter obj)
{
CMNewsletter c = obj;
return String.Compare(c.Name, this.Name);
}
每个类都有自己的CompareTo
实现。所以这个实现应该在每个类中完成。
现在需要在某些基类对象上调用CompareTo。 CMBase
是前面提到的所有类的基类。
以下代码是我想要设计我的类的方式。
CMBase reference, copy;
if (reference.CompareTo(copy) == 0)
{
Console.WriteLine("Not changed");
}
reference
和copy
目的将CMNewsletter
型或其他,其中的CompareTo
实际执行驻留的。
我不知道如何实现整个类层次结构来完成我所描述的。
你真的想一些'CMNewsletter'比较另一个派生的对象?是不是足够比较基础字段(好吧*应该*!) - 如果你想保持类打开你不能以合理的方式做到这一点 – Carsten
如果你总是调用CompareTo并像这样检查零, CompareTo()== 0',你可能实现了错误的接口,那么你需要实现'IEquatable'。 –
由于您的WriteLine输出是“未更改”,因此您似乎在试图查看对象是否相同,这与IComparable无关。 'IEquatable'会告诉你,5不等于7.'IComparable'会告诉你5之前7. – Claies