C#中Null類型


  1:可空值類型

  可空值類型是System.Nullable<T>這個struct的類型

  可空值類型除了可以正確的表示其底層數據類型(也就是T)的范圍,還可以表示null

  1.1:如下,bool值類型可以為True和False,但不能為Null

        Nullable<bool>除了可以為True和False外,還可以為Null

  

  1.2:Nullable寫起來太麻煩,這里有簡便寫法,只需要在類型后面加個?即可,如下

 

2:Null,空,空白string

            string name = "張三"; //正常字符串,有值非空

            string name1 = null;  //值為null

            string name2 = "";    //是個空字符串

            string name3 = "    ";//空白字符串,雙引號之間是空格或者Tab鍵

  2.1:如何判斷Null,空,空白string

    2.1.1:判斷Null

string name = null; 

if (name == null)
{
    //...
}

    2.1.2:判斷空,雙引號之間啥也沒有那種,下面的這個方法同樣也包含了字符串為Null的這種情況

string name2  = ""; 

if (string.IsNullOrEmpty(name2))
{
    //...
}

    2.1.3:判斷空白字符串,也可能是空字符串,也可能是Null字符串,就用下面這個

string name3 = "    ";

if (string.IsNullOrWhiteSpace(name3))
{
    //...
}

3:Nullable<T>的常用屬性和方法

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

    

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

    

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

    

  .GetValueOrDefault(默認值)//底層值類型的值或指定的默認值,意思就是可以指定默認值,不為Null就返回底層值類型;如果為Null就返回默認值

    

 4:Nullable<T>轉換

  T ---> Nullable<T> 隱式轉換,因為后面的比前面的值的范圍大,多了一個Null值

  如下圖:從范圍小的a轉換成范圍大的b就直接隱式轉換,前提這個范圍大的要包含范圍小的類型才可以

  

  Nullable<T> ---> T ,反而言之,就得顯示轉換,如圖一錯二對:

     

  如果值為Null,就會報異常,如圖:

  

5:檢查Null的操作符

  條件操作符(三元運算符)?:  

  

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

    

  Null條件操作符 ?.  

  

  Null條件操作符還有  ?[   針對索引表示法的Null條件操作符

   

 6:string str = null,string str1 = “”,string str2 = string.empty;的區別

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

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

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

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM