繁体   English   中英

ToString(CultureInfo.CurrentCulture)这需要吗?

[英]ToString(CultureInfo.CurrentCulture) Is this needed?

我正在使用Api,并且所有字符串都具有?.ToString(CultureInfo.CurrentCulture)

这是做什么的,需要这样做吗? 其他数据类型(例如int或小数)又如何呢?

一些文化用不同的方式写数字(尤其是小数)。 对于大多数欧洲语言,小数点写为逗号,数字分隔符写为点,例如:

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

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

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

更新:如注释中所指出,ToString()将默认为当前区域性。 这是一个问题,因为对于开发人员而言,看起来像在开发人员机器上预期的那样工作的外观将有所不同,并且可能会失败,实际上,您尚未明确说明您的意图。 这就是RS#抱怨的原因。

Resharper之类的工具建议明确指定文化的原因在于:

数据结构到文本的临时转换在很大程度上取决于当前的区域性,当在与本地开发人员不同语言环境的机器上执行代码时,可能会导致意想不到的结果。 为避免歧义,ReSharper会警告您代码中可能出现此类问题的任何实例。

如您所写,因此您应对其行为负责。

而且,在我看来,默认设置已经不够好了。 它假定人类将阅读格式化的文本,并且使用希望在我们的进程/线程开始时设置的文化,或者如果没有使用环境默认语言,则该文化是希望的。 Windows提供了很多设置来自定义显示thin的方式,以及何时将应用程序比桌面更有意义的应用程序,它比现在更有意义-只需使用用户想要的任何内容,他都会对此感到满意。

如果您正在从事API项目,并且在这些调用中到处都可以看到CurrentCulture ,并且文本没有直接显示给用户,则编写该文本的人很可能不理解-他只是解决了错误/警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM