2 回答

TA貢獻(xiàn)1856條經(jīng)驗 獲得超11個贊
C#中所有的引用類型都可以為空
而值類型在聲明的時候即時不賦值,也會有默認(rèn)值
在值類型(int,DateTime之類)后面加個"?" 表示這是一個Nullable類型.
在C#1.x的版本中,一個值類型變量是不可以被賦予null值的,否則會產(chǎn)生異常。
在C#2.0中,微軟提供了Nullable類型,允許用它定義包含null值(即空值)的數(shù)據(jù)類型,這對處理數(shù)據(jù)庫中包含可選字段以及很多方面都有很大幫助。
例
DateTime now = null; 是會報錯的,
因為DateTime類型是一個值類型, 不能為空.(就像int值不能為空一樣) 但
DateTime? now = null; 卻不會報錯.
把一個值類型變量定義為對應(yīng)的Nullable類型后, 這個變量就有一些其他的屬性
now.HasValue 是一個bool值,表示該變量是否非空.
now.Value 就是對應(yīng)的DateTime類型值. 注意不要在now.HasValue為false的時候使用這個屬性
這個"?"語法就是定義Nullable<T>的一個快捷語法.

TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊
可空類型表示可被賦值為 null 值的值類型變量,引入是是為了和數(shù)據(jù)庫的null對應(yīng)。
而引用類型本身已支持 null 值,不需可空類型,所以語法也強(qiáng)制要求了沒有這種用法。
例
int a=0 正確
int a=null 報錯
int? a=null 正確
string b=null 正確
- 2 回答
- 0 關(guān)注
- 998 瀏覽
添加回答
舉報