5

object[]単一のタイプ(実行時に不明)のオブジェクトを比較しようとしています。それらはSystem.string、、、、、intまたはタイプですdecimalDatetimebool

これらのオブジェクトの2つを比較して、最初に適切なタイプにキャストしなくても、一方が他方よりも大きいか小さいかを判断する方法はありますか?

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 に答える