object[]
単一のタイプ(実行時に不明)のオブジェクトを比較しようとしています。それらはSystem.string
、、、、、int
またはタイプですdecimal
。Datetime
bool
これらのオブジェクトの2つを比較して、最初に適切なタイプにキャストしなくても、一方が他方よりも大きいか小さいかを判断する方法はありますか?
問題の型はすべてIComparableを実装しているため、要素を比較できることが配列の本質的な要件である場合は、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));