string s;string s=null;string="";string s=string.Empty的區別

    最近在寫一些程序時,總是遇到一些關於null的問題,所以就查了一些資料,終於弄清楚了真相.

    null名詞解釋:     (MSDN)null是一個字面文本,它代表空引用,即引用變量沒有引用(指向)到任何對象,它是引用類型的默認值.

   string s;該語句表示只是聲明瞭一個引用變量,但是並沒有初始化引用,所以對變量s的任何操作(除了初始化賦值外) 都將引發異常.

    string s=null;該語句表示聲明瞭一個引用變量並初始化引用,但是該引用沒有指向任何對象.但可以把它作爲參數傳遞或其它使用,但是不能調用它作爲對象的方法,如toString,getHashCode等.驗證程序如下:      

 public static void RunSnippet()  

{          

    string s;         

  s=null; 

    getString(s); 

 } 

 protected static void getString(string originalString) 

 {  

  System.Console.WriteLine(originalString+"I Love you"); 

 }   

   該程序將運行正確,在控制檯輸出結果 I Love you.但如果程序改變一下將不會運行正確,如下:  

public static void RunSnippet()

 {       

   string s;      

   s=null;        

   getString(s);  

}  

protected static void getString(string originalString)

 {  

  System.Console.WriteLine(originalString.toString()+"I Love you");  

}       

     這時候程序將引發異常"未將對象引用設置到對象實例",就是因爲調用了toString()方法. string s="";該語句表示聲明並引用到一個對象,只不過這個對象爲0個字節.所以既然有了對象,就可以調用對象的方法,看如下程序:

 

 public static void RunSnippet()

 {          

   string s;        

   s="";        

   getString(s);

 }

 protected static void getString(string originalString)

  {  

  System.Console.WriteLine(originalString.ToString()+"Love you");  

}

該程序運行完全正確. string s=string.Empty跟string s=""是完全一樣的. 希望對初學者有些幫助!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章