2011-11-22 65 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));