Ich versuche, eine einfache Klammer zu erstellen (so dass ich die Werte von etwas vergleichbares ... meist für Zahlstypen wie int, double, etc.)Nullable generischer Typ, der mit IComparable verwendet wird. Ist es möglich?
Das Problem ist, wenn ich Folgendes tue Ich erhalte einen Fehler, aber according to MSDN IComparable's CompareTo soll Nullwerte verarbeiten können.
Quote: "Per Definition vergleicht jedes Objekt größer als Null, und zwei Null-Referenzen vergleichen einander."
public static T Clamp<T>(this T value, T min, T max)
where T : IComparable<T>
{
if (value.CompareTo(max) > 0)
return max;
if (value.CompareTo(min) < 0)
return min;
return value;
}
private Int32? _zip;
public Int32? Zip
{
get
{
return _zip;
}
set
{
_zip = value.Clamp<Int32?>(0, 99999);
}
}
Ich bin mir nicht sicher, warum ich nicht nur getan habe (Wert == null)? Wert: Wert. Klammer (0, 99999); beginnen mit. Ich glaube, ich habe nur versucht, die Clamp zu zwingen, es automatisch zu machen. Aber ja, es macht eigentlich mehr Sinn, es nicht auf Null zu setzen, da es klemmt. –
Und jetzt wird es nicht für String funktionieren))) –