Ich muss generische vergleichen zwei primitive (numerische!) Typen (beide als Objekt boxed), um die größere zu finden. Ich kann Generics nicht verwenden, da ich nur Objekte erhalte, aber ich weiß, dass die ungepackten Werte primitive Zahlen sind (int, short, long, float usw.), also kann ich nach IComparable umwandeln.Dynamischer Vergleich der Boxed Primitive Werte
Wie kann ich diese vergleichen? CompareTo() gibt einen Fehler aus, weil sie unterschiedliche Typen sind, aber ChangeType kann eine OverflowException verursachen ...?
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();
}
Was meinst du mit "der Größere"? Ich meine angesichts der Tatsache, dass sie alle numerisch sind, nehme ich an, wir sprechen über den numerischen Vergleich richtig? Nur benötigt, um zu klären – kuskmen
Ja, richtig :) danke für die Erinnerung, ich habe diese Informationen zur Beschreibung hinzugefügt – Robin