Object. compareto (Object)用于未知数据类型



我试图比较单一类型(运行时未知)的object[]中的对象。System.stringintdecimalDatetimebool类型。

是否有一种方法可以比较这两个对象,以确定一个比另一个大或小,而不必先将它们转换为适当的类型?

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

所有这些类型都实现了IComparable接口,因此您可以将对象强制转换为IComparable(或者仅保留IComparable[]数组而不是object[])。然后你可以使用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));