我正在尝试比较object[]
中单个类型的对象(运行时未知)。它们属于System.string
,int
,decimal
,Datetime
或bool
类型。
有没有办法比较其中两个对象,以确定一个对象是否大于或小于另一个,而不必先将它们转换为适当的类型?
答案 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));