string.format with null形式
-
10-10-2019 - |
質問
次の理由を誰でも説明できますか?
String.Format(null, "foo") // Returns foo
String.Format((string)null, "foo") // Throws ArgumentNullException:
// Value cannot be null.
// Parameter name: format
ありがとう。
解決
それは異なる過負荷を呼び出します。
string.Format(null, "");
//calls
public static string Format(IFormatProvider provider, string format, params object[] args);
MSDNメソッドリンク 上記の説明。
string.Format((string)null, "");
//Calls (and this one throws ArgumentException)
public static string Format(string format, object arg0);
MSDNメソッドリンク 上記の説明。
他のヒント
どのオーバーロードされた関数が呼び出されるため、パラメーターの静的タイプに基づいてコンパイル時間で決定されます。
String.Format(null, "foo")
電話 String.Format(IFormatProvider, string, params Object[])
空のiformatproviderと「foo」のフォーマット文字列があります。これは完全に問題ありません。
一方で、
String.Format((string)null, "foo")
電話 String.Format(string, object)
nullをフォーマット文字列として使用すると、例外がスローされます。
所属していません StackOverflow