2016-04-29 4 views
1

ich eine Konsolenanwendung erstellt haben das Verhalten vonWarum das Verhalten von Convert.ToString (Objekt als null) vs Convert.ToString (string als null)

Convert.ToString() 

, zu analysieren weiß, dass ich Convert.ToString() nicht Ausnahme verursachen , aber in Bezug auf das Objekt initialisiert es den Rückgabe-String als leer, im Falle eines Strings bleibt er jedoch null.

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

Was ist die Frage? – fhogberg

+0

Bitte teilen Sie Ihre genaue Frage. –

+1

Ich denke, seine Frage ist, warum ist das Verhalten dieses anders, wenn sie beide Referenztypen sind und auf dem Heap gespeichert – Baahubali

Antwort

2

Wenn Sie an ihren kompilierten Assemblys aussehen sieht das Programm wie dieses

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

die ersten ToString Returns "" String, weil sie die folgende Bedingung

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

und die zweite ToString kehrt prüft null, weil folgende Methode ausgeführt wird

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

es sieht verwirrend aus, weil ToString auf beiden Aussagen gleich ist, aber tatsächlich arbeiten sie beide anders. Die erste ToString Funktion ruft die ToSting von Object Type und die zweite ToString Funktionsaufrufe ToString von String Type

Verwandte Themen