2016-04-29 181 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

相关问题