Ich versuche, eine einfache Klammer zu erstellen (so dass ich die Werte von etwas Vergleichbarem begrenzen kann ... vor allem für Zahlentypen wie int, double, usw.)
Das Problem ist, wenn ich das Folgende tue, erhalte ich einen Fehler, aber laut MSDN IComparable's CompareTo soll mit Nullwerten umgehen können.
Zitat: "Per Definition wird jedes Objekt größer als Null verglichen, und zwei Null-Referenzen werden gleich verglichen."
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);
}
}