跳至內容

C Sharp/空值

維基教科書,自由的教學讀本

string str = null;在棧上有地址,但在堆上沒有空間;null是string的默認值

string str1 ="":空字符串,在棧和堆都有地址,並且堆上地址為空

string str2 = string.empty;它和str1差不多,在堆疊都為空間,不同就是在語法級上對str1的優化

可空值類型System.Nullable<T>:可以正確的表示其基礎數據類型,還可以表示null。例如,bool值類型可以為True和False,但不能為null。Nullable<bool>除了可以為True和False外,還可以為null。Nullable寫起來太麻煩,這裡有簡便寫法,只需要在類型後面加個?即可,如 bool? b1=null;

判斷Null,可用if (name == null)。也可用if (string.IsNullOrEmpty(name2))。

Nullable<T>.HasValue //如果值為null,結果就是false; 否則:true  

Nullable<T>.Value //底層值類型的值,如果Nullable<T>的值是Null,就會報異常

Nullable<T>.GetValueOrDefault() //底層值類型的值或該類型的默認值,意思就是如果你的值不為Null,就會把值返回回來;如果是Null,就返回這個值的默認值,int的默認值是0

T ---> Nullable<T>為隱式轉換;Nullable<T> ---> T ,就得顯示轉換,如果值為Null,就會報異常。

Null合併操作符a??b 如果左邊a不為Null,返回左邊a的值;如果a為Null,返回b的值

Null條件操作符?. 如a?.memberName

Null條件操作符還有  ?[ 針對索引表示法的Null條件操作符。如 arrayName?[1].Trim();