2012-08-29 66 views
0

當我訪問我的Linq to SQL對象來檢查空值或者出現異常時,我經常需要調用Value屬性。有人可以擴展這些數據類型(即小數?,布爾?等),似乎包裝原始類型?十進制和decimal.value之間的區別?

+0

可能重複http://stackoverflow.com/questions/2735638 /可爲空的整數式網) – Magnus

回答

1

它們是Nullable<T>類型的泛型,它們包裝原始類型。

爲什麼他們發明了簡寫形式int? Nullable似乎歸結爲簡潔和簡潔的C語言開發人員之間的標準混淆。

decimal? total = null; 

total.HasValue將返回false,它將不會與空引用

total.Value.ToString();炸燬會拋出一個異常,因爲總的Value屬性爲null。

Value和HasValue屬性是隻讀的。

total = 10; 

表示total.Value將返回10.0和total.HasValue將返回true。

它的[在.NET空整型(的一個非常好的通用的,尤其是對於數據庫類型,但仍沒有得到短期形式,雖然...

1

decimal?是速記(等於)nullable<decimal>,這意味着它可以設置值爲null。同樣的事情適用於bool?,int?

當您的數據庫字段允許空值時,這些值由Linq 2 SQL選擇。否則,您將無法指示這些值應爲null