5

我正在尝试比较object[]单一类型的对象(在运行时未知)。它们属于System.stringintdecimalDatetimebool类型。

有没有办法比较这些对象中的两个以确定一个大于或小于另一个而不必先将它们转换为适当的类型?

4

3 回答 3

7

有问题的类型都实现了 IComparable,因此,如果能够比较元素是数组的内在要求,则可以将其声明为IComparable[]

于 2011-11-22T20:51:28.073 回答
2

所有这些类型都实现了IComparable接口,因此您可以将对象转换为IComparable(或仅保留一个IComparable[]数组而不是object[])。然后你可以使用 CompareTo(object x)方法。

于 2011-11-22T20:51:30.870 回答
1

您提到的所有类型都实现了IComparable,因此您可以使用IComparable.CompareTo. 举个例子:

object[] ints = new object[] { 2, 1, 3};
object n = 2;
var compareResults = ints.OfType<IComparable>().Select(c => c.CompareTo(n));
于 2011-11-22T20:51:44.530 回答