我正在处理一个在文本框中使用小数的项目。我目前正在开发一台将十进制分隔符设置为","而不是"。"所以在将文本字符串解析为十进制时我不得不使用这句话:
decimal number = Decimal.Parse(number.Text, CultureInfo.InvariantCulture);
现在...... CultureInfo.InvariantCulture是正确的做法,还是应该使用CurrentCulture?
谢谢,
的Matias。
答案 0 :(得分:4)
对于用户输入,您通常需要CultureInfo.CurrentCulture
。 你使用对你来说不自然的语言环境的事实不是通常的用户案例 - 如果用户在整个系统中有,
作为小数点,那么他们很可能习惯使用它,而不是您首选的.
。换句话说,当您在具有类似语言环境的系统上进行测试时,学会使用,
而非.
- 这是使语言环境测试变得有用的部分原因:)
另一方面,如果你是将值存储在配置文件或类似的内容中,您确实想使用CultureInfo.InvariantCulture
。
这个想法很简单 - 是用户的数据(=> CurrentCulture
),还是应该是全局的(=> InvariantCulture
)?
答案 1 :(得分:0)
如果你做了一个正确的国际化计划......
A)如果您使用的是Winforms或WPF,或者通常用户将在程序的机器上“工作”,那么应该使用CurrentCulture
B)如果您是网络编程,那么用户应该能够选择其文化,而CurrentCulture
(网络服务器的文化)应仅用作默认
然后,
A)您“内部”保存的数据(因此要编写然后由您的程序读取)应使用InvariantCulture
,
B)与其他应用程序交换的数据最好用InvariantCulture
编写(除非另一个应用程序编写得很糟糕且需要特定格式),
C)导出到用户的文件应遵循先前的规则(关于用户界面的规则),除非您使用像XML这样的“标准定义格式”(然后使用Xml格式化程序)