我有一系列從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