Próbuję utworzyć prosty zacisk (tak, żebym mógł powiązać wartości z czymkolwiek porównywalnym ... głównie dla typów liczbowych, takich jak int, double itp.).Nullable rodzajowy używany z IComparable. Czy to możliwe?
Problem polega na tym, że wykonuję następujące czynności Wystąpił błąd, ale porównanie z funkcją IComparable ma być w stanie obsłużyć wartości null.
Cytat: "Z definicji każdy obiekt porównuje wartość większą niż zero, a dwie wartości zerowe są równe sobie."
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);
}
}
Nie jestem pewien, dlaczego tak się nie stało (wartość == null)? value: value.Clamp (0, 99999); najpierw. Chyba właśnie próbowałem zmusić Zacisk, by zrobił to automatycznie. Ale tak, to ma więcej sensu, aby nie zerwać go, ponieważ jest zaciśnięcie. –
A teraz nie będzie działać na ciąg))) –