ToString(CultureInfo.CurrentCulture)这需要吗?

时间:2017-12-21 12:59:05

标签: c# cultureinfo

我正在研究Api并且所有字符串都有?.ToString(CultureInfo.CurrentCulture)

这是做什么的,是否需要? 那么其他数据类型如int或decimal?

2 个答案:

答案 0 :(得分:0)

有些文化以不同的方式编写数字(特别是小数)。对于大多数欧洲语言,小数点写为逗号,数字分隔符写为点,例如:

  • 英语100000.34
  • 斯洛伐克语100000,34

整数不一定需要它。如果使用数字分隔符进行格式化,则会更加混乱:

  • 英文100,000.34
  • 斯洛伐克语100.000,34

更新:正如评论中所指出的,ToString()将默认为当前文化。这是一个问题,因为在开发人员的机器上看起来按预期工作的东西对于客户来说看起来会有所不同,并且可能会失败 - 实际上,您没有明确说明您的意图。这就是RS#抱怨它的原因。

答案 1 :(得分:0)

像Resharper这样的工具建议specify culture explicitly的原因应该被理解:

  

数据结构到文本的临时转换在很大程度上取决于   当前的文化,可能会在代码时导致意想不到的结果   在区域设置不同于的机器上执行   原始开发者。为了防止含糊不清,ReSharper警告你   代码中可能出现此类问题的实例。

正如你所写,所以你要对它的行为负责。

此外,在我看来,默认值不再足够好。它假设人类将读取格式化文本,并使用希望在我们的进程/线程的开头设置的文化,或者如果不使用环境默认值。 Windows提供了很多设置来自定义薄片的显示方式,而且当应用程序经常使用桌面时,它比现在更有意义 - 只需使用任何用户想要的东西,他就会满意。

如果您正在处理API项目并且在这些调用中看到CurrentCulture,并且文本没有直接显示给用户,那么编写它的最可能的人不明白 - 他只修复了错误/警告。