我試圖比較object[]
中單個類型(運行時未知)的對象。它們是System.string
,int
,decimal
,Datetime
或bool
類型。未知數據類型的Object.CompareTo(Object)
有沒有辦法比較這些對象中的兩個,以確定一個是大於還是小於另一個,而不必先將它們轉換爲適當的類型?
我試圖比較object[]
中單個類型(運行時未知)的對象。它們是System.string
,int
,decimal
,Datetime
或bool
類型。未知數據類型的Object.CompareTo(Object)
有沒有辦法比較這些對象中的兩個,以確定一個是大於還是小於另一個,而不必先將它們轉換爲適當的類型?
問題的類型都實現了IComparable的,所以,如果能夠比較元素是你的陣列的內在要求,你可以聲明它作爲一個IComparable[]
代替。
哈,你快了3秒;-) –
所有這些類型的實現IComparable
接口,這樣你就可以投你的對象IComparable
(或者只是保持,而不是object[]
的IComparable[]
陣列)。然後您可以使用 CompareTo(object x)
方法。
您提到的所有類型均爲IComparable
,因此您可以使用IComparable.CompareTo
。舉個例子:
object[] ints = new object[] { 2, 1, 3};
object n = 2;
var compareResults = ints.OfType<IComparable>().Select(c => c.CompareTo(n));
你至少要將它們轉換爲IComparable,然後使用CompareTo。 – user629926