2016-04-29 182 views
1

我創建了一個控制檯應用程序的行爲(字符串空)來分析爲什麼Convert.ToString的(對象爲空)與Convert.ToString

Convert.ToString() 

的行爲,我知道Convert.ToString()不會導致異常,但是就對象而言,它將返回字符串初始化爲空,但是在字符串的情況下它仍然爲空。

string s = null; 
object obj = null; 
string objec = Convert.ToString(obj);//it return an empty string 
string ss = Convert.ToString(s);// it returns ss=null 
+2

什麼問題? – fhogberg

+0

請分享您的確切問題。 –

+1

我認爲他的問題是爲什麼這是不同的行爲,當他們都是參考類型,並存儲在堆 – Baahubali

回答

2

當你看到他們的編譯的程序集的程序是這樣的

 string s = null; 
     Convert.ToString(null); //1 
     Convert.ToString(s); // 2 

第一ToString返回""字符串,因爲它會檢查以下條件

  if (value == null) 
     { 
      return string.Empty; 
     } 

和第二ToString回報null,因爲它執行以下方法

public static string ToString(string value) 
     { 
      return value; 
     } 

它看起來令人困惑,因爲ToString在兩個語句上都是相同的,但實際上它們的工作方式不同。第一個ToString函數調用Object Type的ToSting和第二個ToString函數調用ToString的String Type

相關問題