String.Format con formato nula
-
10-10-2019 - |
Pregunta
Puede alguien explicar por qué ocurre lo siguiente:
String.Format(null, "foo") // Returns foo
String.Format((string)null, "foo") // Throws ArgumentNullException:
// Value cannot be null.
// Parameter name: format
Gracias.
Solución
Su llamar a una sobrecarga diferente.
string.Format(null, "");
//calls
public static string Format(IFormatProvider provider, string format, params object[] args);
MSDN Método de enlace describe anteriormente.
string.Format((string)null, "");
//Calls (and this one throws ArgumentException)
public static string Format(string format, object arg0);
MSDN Método de enlace describe anteriormente.
Otros consejos
Debido a que la función sobrecargada se llama obtiene determinado en tiempo de compilación basado en el tipo estático del parámetro:
String.Format(null, "foo")
String.Format(IFormatProvider, string, params Object[])
con un IFormatProvider vacío y un formato de cadenas de " foo", que está perfectamente bien.
Por otro lado,
String.Format((string)null, "foo")
String.Format(string, object)
con nula como un formato de cadenas, lo que arroja una excepción.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow