두 개의 프리미티브 (숫자!) 유형 (둘 다 객체로 표시됨)을 비교하여 더 큰 것을 찾아야합니다. 개체 만 가져 오기 때문에 제네릭을 사용할 수 없지만 unboxed 값은 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