2 回答

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

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