Typumwandlung

06/12/2007 - 10:28 von Kim Frank | Report spam
Hallo,
ich habe eine Verstàndnis Frage an die Profis.

object wert = null;
string fall1 = Convert.ToString(wert);
string fall2 = wert.ToString();
string fall3 = (string)wert;

Warum ist fall1 = "" also String.Empty, beim zweiten tritt eine NullReferenceException auf und im
3.Fall ist fall3 = null.

Ich habe also im Prinzip (für mein Verstàndnis) 3x das gleiche gemacht und erhalte 3 verschiedene
Ergebnisse, wobei im zweiten Fall vermutlich ein null.ToString() ausgeführt werden sollte. Nichts
desto Trotz verwirrt mich die ungleich Behandandlung des Compilers von an sich 3 gleichen
Operationen und die damit verbundene Stolperfalle.
 

Lesen sie die antworten

#1 Andre Stille
06/12/2007 - 11:10 | Warnen spam
Hallo,

"Kim Frank" <Keine> schrieb im Newsbeitrag
news:e6YAdp%
Hallo,
ich habe eine Verstàndnis Frage an die Profis.

object wert = null;
string fall1 = Convert.ToString(wert);
string fall2 = wert.ToString();
string fall3 = (string)wert;

Warum ist fall1 = "" also String.Empty, beim zweiten tritt eine
NullReferenceException auf und im 3.Fall ist fall3 = null.

Ich habe also im Prinzip (für mein Verstàndnis) 3x das gleiche gemacht und
erhalte 3 verschiedene Ergebnisse, wobei im zweiten Fall vermutlich ein
null.ToString() ausgeführt werden sollte. Nichts desto Trotz verwirrt mich
die ungleich Behandandlung des Compilers von an sich 3 gleichen
Operationen und die damit verbundene Stolperfalle.



1. Fall:
Es wird die statische Funktion System.Convert.ToString(Object) aufgerufen
und die ist so definiert,
dass sie String.Empty zurückliefert, wenn man als Argument null übergibt.

2. Fall:
Es wird System.Object.ToString aufgerufen, dies ist eine nicht-statische
Funktion und da sie auf
null ausgeführt wird, muss nach C# Spezifikation eine NullReferenceException
geworfen werden.

3. Fall:
Hier handelt es sich um eine explizite Referenz-Umwandlung, da kommt immer
null heraus, wenn
die umzuwandelnde Referenz null ist.

MfG
Andre Stille

Ähnliche fragen