String.Format with null format
-
10-10-2019 - |
Pergunta
Can anyone explain why the following occurs:
String.Format(null, "foo") // Returns foo
String.Format((string)null, "foo") // Throws ArgumentNullException:
// Value cannot be null.
// Parameter name: format
Thanks.
Solução
Its calling a different overload.
string.Format(null, "");
//calls
public static string Format(IFormatProvider provider, string format, params object[] args);
MSDN Method Link describing above.
string.Format((string)null, "");
//Calls (and this one throws ArgumentException)
public static string Format(string format, object arg0);
MSDN Method Link describing above.
Outras dicas
Because which overloaded function is called gets determined at compile time based on the static type of the parameter:
String.Format(null, "foo")
calls String.Format(IFormatProvider, string, params Object[])
with an empty IFormatProvider and a formatting string of "foo", which is perfectly fine.
On the other hand,
String.Format((string)null, "foo")
calls String.Format(string, object)
with null as a formatting string, which throws an exception.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow