1) 在與1
元或二元運算子一起使用時,如果其中乙個運算元為
null
或兩個均
null
,則結果為
null
。 如:
int? a = null;
int? b = a+3; 則b
為null
2) 比較可空型別時,只要有乙個運算元為
null
,結果就為
false
如:int? a = null;
int? b = 8;
(a>=b)
將返回false
而正是因為
null
的可能性,所以不能隨意比較乙個可空型別和乙個非可空型別。
3) 空接合運算子
空接合運算子
」??」
為處理可空型別和引用型別時表示
null
值的可能性提供了一種快捷方式,或許我們不用總寫
if(xx!=null)
。有點類似三元運算子
」?:」
,如果」??」
前面乙個數(第乙個數必需為可空或引用型別)不是
null,
則表示式的值就為第乙個運算元的值,如果第乙個運算元為
null
,表示式的值則為第二個表示式的值。
如:int? a= null;
int defaut = 1010;
int b;
b=a??defaut;//此時b
取defaut
的值a = 8;
b=a??defaut;//此時b
取a的值當然,這裡第二個數應該是與第乙個數型別相同或者能隱式轉化為第乙個數的。
ps:無法建立基於引用型別的可空型別,因為引用型別已支援null值。
C tips 關於可空型別
1 在與1 元或二元運算子一起使用時,如果其中乙個運算元為 null 或兩個均 null 則結果為 null。如 int?a null int?b a 3 則b 為null 2 比較可空型別時,只要有乙個運算元為 null 結果就為 false 如 int?a null int?b 8 a b 將返...
關於可空值型別
有這樣乙個場景,在資料庫中經常有一些欄位是可以為空的,把資料庫中的字段對映成c 中的乙個物件會出現一些問題,比如 乙個人的出生日期是乙個值型別 datetime,在資料庫中是可以為空的乙個字段,當你使用 ado.net 把它對映成物件的時候,對 datetime 屬性賦值就變的比較困難了,如果資料庫...
可空型別 ?和??
可空型別可以表示所有實際型別的值加上null。如果和資料庫打交道,這就會很有用,因為在資料庫表中遇到未定義的列是很常見的事情。為了定義乙個可空變數型別,應在底層資料型別中新增問號 作為字尾。注意,這種語法只對值型別是合法的,區域性可空變數必須賦值乙個初始值。定義一些區域性可空型別 int?a 10 ...