具有 null 格式的 String.Format
任何人都可以解释为什么会发生以下情况:
String.Format(null, "foo") // Returns foo
String.Format((string)null, "foo") // Throws ArgumentNullException:
// Value cannot be null.
// Parameter name: format
谢谢。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它调用不同的重载。
MSDN 方法链接 如上所述。
MSDN 方法链接 如上所述。
Its calling a different overload.
MSDN Method Link describing above.
MSDN Method Link describing above.
因为调用哪个重载函数是在编译时根据参数的静态类型确定的:
调用
String.Format(IFormatProvider, string, params Object[])
带有一个空的 IFormatProvider 和一个格式化字符串“foo”,这完全没问题。另一方面,
调用
String.Format(string, object)
使用 null 作为格式化字符串,这会引发异常。
Because which overloaded function is called gets determined at compile time based on the static type of the parameter:
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,
calls
String.Format(string, object)
with null as a formatting string, which throws an exception.