提问人:Matias 提问时间:3/13/2015 最后编辑:DLehMatias 更新时间:3/13/2015 访问量:1640
CultureInfo.InvariantCulture 的使用
Use of CultureInfo.InvariantCulture
问:
我正在处理一个在文本框中使用小数的项目。我目前正在一台将小数分隔符设置为“,”而不是“”的机器中进行开发,因此在将文本字符串解析为十进制时,我不得不使用这句话:
decimal number = Decimal.Parse(number.Text, CultureInfo.InvariantCulture);
现在。。。CultureInfo.InvariantCulture 是正确的做法,还是应该改用 CurrentCulture?
谢谢
马蒂亚斯。
答:
对于用户输入,您通常需要 .事实上,你使用的语言环境对你来说并不自然,这不是通常的用户情况 - 如果用户在整个系统中都有小数点作为小数点,他们可能习惯于使用它,而不是你喜欢的。换言之,当你在具有类似语言环境的系统上进行测试时,请学习使用 ,
而不是 。
- 这是使语言环境测试有用的部分原因:)CultureInfo.CurrentCulture
,
.
另一方面,如果您将值存储在配置文件或类似的东西中,您真的想使用 .CultureInfo.InvariantCulture
这个想法相当简单——是用户的数据 (=> ),还是应该是全局的 (=> )?CurrentCulture
InvariantCulture
评论
如果你做一个正确的国际化程序......
A) 如果您使用的是 Winforms 或 WPF,或者通常用户将在程序的机器上“工作”,那么输入解析应该使用CurrentCulture
B) 如果您是 Web 编程,那么用户应该能够选择其区域性,并且(Web 服务器的区域性)应该仅用作默认值CurrentCulture
然后
A)您“内部”保存的数据(因此要写入然后由您的程序读取)应该使用,InvariantCulture
B) 您与其他应用程序交换的数据最好使用(除非其他应用程序写得不好并且需要特定格式),InvariantCulture
C) 导出给用户的文件应遵循前面的规则(关于用户界面的规则),除非您使用的是像 XML 这样的“标准定义格式”(然后使用 Xml 格式化程序)
评论
number.Text