我試圖創建一個簡單的卡箍(這樣我就可以綁定的東西可比價值...主要用於數字類型,如int,double等)與IComparable一起使用的可爲空的泛型類型。可能嗎?
的問題是,如果我做了以下我收到一個錯誤,但是IComparable的CompareTo應該能夠處理空值。
Quote:「根據定義,任何對象比較大於null,並且兩個空引用比較彼此相等。」
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);
}
}
我不知道爲什麼我沒有做(價值== null)?值:value.Clamp(0,99999);開始。我想我只是試圖強制Clamp自動執行此操作。但是,是的,它實際上是更有意義的,因爲它是夾緊的,所以不要將它歸零。 –
2010-07-20 22:31:42
現在它不適用於字符串))) – 2018-02-20 10:31:10