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();