2つのプリミティブ(数値!)タイプ(オブジェクトとしてボックス化されています)を比較して、より大きなものを見つける必要があります。 オブジェクトを取得するだけなのでジェネリックは使用できませんが、ボックス化されていない値はプリミティブな数値(int、short、long、floatなど)なので、IComparableにキャストできます。ボックス化されたプリミティブ値の動的比較
どのようにそれらを比べることができますか? CompareTo()は異なる型であるためにエラーをスローしますが、ChangeTypeはOverflowExceptionを引き起こします...?
public static int Compare(object value1, object value2)
{
//e.g. value1 = (object)(int)1; value2 = (object)(float)2.0f
if (value1 is IComparable && value2 is IComparable)
{
return (value1 as IComparable).CompareTo(value2);
//throws exception bc value1.GetType() != value2.GetType()
}
throw new ArgumentException();
}
「より大きい」とはどういう意味ですか?私はそれらがすべて数字であるという事実を与えられているということです私は数値比較の権利について話していると思いますか? – kuskmen
明確にする必要がありますはい、正解:覚えてくれてありがとう、私は説明にこの情報を追加しました – Robin