Frage

Kann mir jemand erklären, warum die folgenden Ereignisse eintritt:

String.Format(null, "foo") // Returns foo
String.Format((string)null, "foo") // Throws ArgumentNullException:
                                   // Value cannot be null. 
                                   // Parameter name: format

Danke.

War es hilfreich?

Lösung

Sein eine andere Überlastung aufrufen.

string.Format(null, "");  
//calls 
public static string Format(IFormatProvider provider, string format, params object[] args);

MSDN-Methode Link- oben beschreiben.

string.Format((string)null, "");
//Calls (and this one throws ArgumentException)
public static string Format(string format, object arg0);

MSDN-Methode Link- oben beschreiben.

Andere Tipps

Da die überladene Funktion aufgerufen wird wird bei der Kompilierung auf der Basis des statischen Typen des Parameters:

String.Format(null, "foo")

String.Format(IFormatProvider, string, params Object[]) mit einem leeren IFormatProvider und eine Formatierung Zeichenfolge " foo“, was völlig in Ordnung ist.

Auf der anderen Seite,

String.Format((string)null, "foo")

String.Format(string, object) mit null als Formatierung String, der eine wirft Ausnahme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top