Object.CompareTo(Object)表示未知数据类型

时间:2011-11-22 20:46:38

标签: c# object compareto

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

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

所有这些类型都会实现IComparable界面,因此您可以将对象投射到IComparable(或只保留IComparable[]数组而不是object[])。然后你可以使用 CompareTo(object x)方法。

答案 2 :(得分:1)

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

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