为什么要在字符串转换中指定区域性
本文关键字:区域性 转换 字符串 为什么 | 更新日期: 2023-09-27 17:56:47
Resharper警告我,在做一个int时,我需要指定一个字符串区域性。ToString()
例如:
int Value = Id.ToString(); // Where Id is an int
这只是 resharper 迂腐,还是有理由我需要提供将 int 转换为字符串的区域性设置?
如果有理由这样做 - 当我的网站在全球范围内使用时,最好使用什么?它是否应该只反映服务器设置,以便安全地完成内部转换?
因为,例如,英语文化使用"."作为小数点,而法国文化使用",",反之则分隔数千个。指定区域性可消除这种多义性,以便代码在为不同语言配置的 Windows 操作系统上以相同的方式执行,尤其是在将分析的值提交到持久存储时。
原因是数字的字符串表示形式因国家/地区而异。
有些使用"."作为千位分隔符,有些使用",",有些根本不使用任何符号。
不带参数的 ToString 重载使用当前区域性,因此输出将根据计算机的设置而有所不同。
也就是说,我的经验法则是:
- 每个内部表示都必须是不变文化(永远不要在服务器设置上中继!
- 演示文稿上的所有内容都必须使用最终用户的区域设置
希望对你有帮助