用多種方法來比較類中包含的數據,在自定義類中覆蓋CompareTo()
方法的方法是什麼?我試圖實現IComparable(Of T)
,所以我實現了一些基準接口。目前還沒有計劃進行任何分類,但如果需要的話,這可以節省我的時間。當有多種方法比較兩個相同類型的對象時,覆蓋CompareTo?
閱讀MSDN主要指出,如果對象相等,則返回0;如果obj1小於obj2,則返回-1;或者1是obj1大於obj2。但是這很簡單。
考慮一個IPv4地址(這是我在我的課上實現的)。有兩個主要的數字要考慮 - IP地址本身和CIDR。假設IPv4地址本身的CIDR是/ 32,所以在這種情況下,在CompareTo
方法中,我可以直接比較地址以確定一個是大於還是小於另一個。但是當CIDR不同時,事情變得棘手。
假設obj1是10.0.0.0/8
而obj2是192.168.75.0/24
。我可以用多種方法比較這兩個地址。我可以忽略CIDR,仍然認爲obj2大於obj1。我可以根據它們的CIDR來比較它們,這將比較網絡的大小(並且a/8將很容易地勝過a/24)。我可以在它們的數字地址和它們的CIDR上比較它們,關於機會obj2實際上是內部的由obj1定義的網絡。
用來處理這種情況的方法是什麼?我可以定義兩個方法,超載,這樣一個人會評估一個地址相對於另一個地址,第二個會評估整個網絡的大小? .NET框架將如何被告知要使用哪一個,取決於人們可能想要如何對數組進行排序?或者做一些其他功能,依靠CompareTo()
?
+1。有趣的事實:在.NET框架中使用的「比較器」一詞甚至不是真正的單詞......它應該被稱爲「比較器」。 – Mehrdad 2011-01-12 05:07:51