String.Format mit null-Format
-
10-10-2019 - |
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.
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