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.

¿Fue útil?

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
scroll top