为什么要在字符串转换中指定区域性

本文关键字:区域性 转换 字符串 为什么 | 更新日期: 2023-09-27 17:56:47

Resharper警告我,在做一个int时,我需要指定一个字符串区域性。ToString()

例如:

int Value = Id.ToString(); // Where Id is an int

这只是 resharper 迂腐,还是有理由我需要提供将 int 转换为字符串的区域性设置?

如果有理由这样做 - 当我的网站在全球范围内使用时,最好使用什么?它是否应该只反映服务器设置,以便安全地完成内部转换?

为什么要在字符串转换中指定区域性

因为,例如,英语文化使用"."作为小数点,而法国文化使用",",反之则分隔数千个。指定区域性可消除这种多义性,以便代码在为不同语言配置的 Windows 操作系统上以相同的方式执行,尤其是在将分析的值提交到持久存储时。

原因是数字的字符串表示形式因国家/地区而异。

有些使用

"."作为千位分隔符,有些使用",",有些根本不使用任何符号。

不带参数的 ToString 重载使用当前区域性,因此输出将根据计算机的设置而有所不同。

也就是说,我的经验法则是:

  • 每个内部表示都必须是不变文化(永远不要在服务器设置上中继!
  • 演示文稿上的所有内容都必须使用最终用户的区域设置

希望对你有帮助