我正在尝试创建一个简单的 Clamp(这样我就可以绑定任何可比较的值......主要用于 int、double 等数字类型)
问题是如果我执行以下操作会出现错误,但根据 MSDN IComparable 的 CompareTo 应该能够处理空值。
引用:“根据定义,任何对象比较大于空,两个空引用比较彼此相等。”
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);
}
}