2011-11-22 64 views
5

我試圖比較object[]中單個類型(運行時未知)的對象。它們是System.string,int,decimal,Datetimebool類型。未知數據類型的Object.CompareTo(Object)

有沒有辦法比較這些對象中的兩個,以確定一個是大於還是小於另一個,而不必先將它們轉換爲適當的類型?

+0

你至少要將它們轉換爲IComparable,然後使用CompareTo。 – user629926

回答

7

問題的類型都實現了IComparable的,所以,如果能夠比較元素是你的陣列的內在要求,你可以聲明它作爲一個IComparable[]代替。

+1

哈,你快了3秒;-) –

2

所有這些類型的實現IComparable接口,這樣你就可以投你的對象IComparable(或者只是保持,而不是object[]IComparable[]陣列)。然後您可以使用 CompareTo(object x)方法。

1

您提到的所有類型均爲IComparable,因此您可以使用IComparable.CompareTo。舉個例子:

object[] ints = new object[] { 2, 1, 3}; 
object n = 2; 
var compareResults = ints.OfType<IComparable>().Select(c => c.CompareTo(n));