Dans ton premier exemple, vous sont frapper Format(String, Object)
, qui ressemble à ceci lorsque démonté:
public static string Format(string format, object arg0)
{
return Format(null, format, new object[] { arg0 });
}
Remarque l' new object[]
autour de cela.
La deuxième, vous êtes apparemment frapper l' Format(string, object[])
d'utilisation, au moins c'est un être invoquée lorsque j'effectue le même test. Démonté, qui ressemble à ceci:
public static string Format(string format, params object[] args)
{
return Format(null, format, args);
}
Donc, toutes ces réellement obtenir canalisé à l' Format(IFormatProvider, string, object[])
. Cool, regardons les premières lignes là:
public static string Format(IFormatProvider provider, string format, params object[] args)
{
if ((format == null) || (args == null))
{
throw new ArgumentNullException((format == null) ? "format" : "args");
}
...
}
...welp, il est votre problème, là! Le premier appel est en l'enveloppant dans un nouveau tableau, il n'est donc pas nulle. En passant null explicitement ne pas le faire le faire, en raison de l'instance spécifique d' Format()
qui appelle.