我试图比较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