是默.CurrentCulture真的有必要在串。格式()?
-
19-08-2019 - |
题
怎么你认为是真的有必要提供 IFormatProvider
在方法 String.Format(string, object)
?
它是更好地编写全变异
String.Format(CultureInfo.CurrentCulture, "String is {0}", str);
或者只是
String.Format("String is {0}", str);
?
解决方案
在一般情况下,你将要使用的特定元素如果你是生是可持续的方式是独立的当前用户的文化(例如在注册表中,或在一个文件)。
你将要使用的CurrentCulture字符串要呈现在UI到当前用户(形式,报告)。
细微的错误可以产生如果您使用CurrentCulture你应该使用特定元素:错误那只来当你有多个用户与不同文化的访问同一个注册条目或文件,或者如果一个用户更改他的默认文化。
明确指定CurrentCulture(默认,如果IFormatProvider的论点是,省略),基本上是文件显示,你已经考虑上述及的串正在产生应使用当前用户的文化。这就是为什么FxCop建议,应指定IFormatProvider的论点。
其他提示
如果你不指定 IFormatProvider
(或者等效地传递 null
)大多数类型参数将最终落到正在根据格式化 CultureInfo.CurrentCulture
.它变得有趣的是,你可以指定一个定义 IFormatProvider
这可以得到第一个裂缝在格式化的参数,或者替代格式的文化取决于其他背景下。
注意, CultureInfo.CurrentCulture
影响参数的格式,没有资源的选择;资源的选择是通过控制 CultureInfo.CurrentUICulture
.
不,你不需要指定的文化,除非你的字符串中包含文化的具体元素,例如十进制分离器、货币等, 必须呈现取决于文化。
这是特别有用的,如果你关心本地化(全球化)在应用程序。也就是说,如果你想要你的应用以支持多种语言和文化的具体格式,然后你应该使用。