我正在运行 ReSharper 的 Beta 版本,它向我发出以下代码的警告:
int id;
// ...
DoSomethingWith(id.ToString());
警告位于id.ToString()
调用,它告诉我“明确指定字符串转换中的区域性”。我理解这个警告,并且我知道如何修复它——只需将代码更改为更笨拙的id.ToString(CultureInfo.InvariantCulture)
.
但我的问题是:有必要吗?我的意思是,显然,当您使用以下类型时指定文化很重要DateTime
(不同的文化有不同的日期格式)和Double
(小数点使用不同的字符)。但Int32.ToString()
,至少在 en-US 和不变文化中,根本不添加任何格式。没有逗号,没有小数点,没有美元符号,什么都没有。那么,不同文化会有什么不同呢?
是否有一些文化实际上add调用无参数时的某种格式Int32.ToString()
?或者这是 ReSharper beta 中的一个错误,并且此警告确实不适用于Int32
(在这种情况下,我将提交 ReSharper 错误报告)?
操作系统允许更改负号对于数字。
Control panel ->
Language and regional settings ->
Additional settings ->
Negative sign
因此,当前的文化可能已经超越了负面信号。在这种情况下,您需要尊重区域设置,这就是警告的原因。您还可以通过编程更改负号:
CultureInfo culture = Thread.CurrentThread.CurrentCulture;
// Make a writable clone
culture = (CultureInfo) culture.Clone();
culture.NumberFormat.NegativeSign = "!";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)