使用CultureInfo.InvariantCulture

时间:2015-03-13 13:12:21

标签: c# decimal cultureinfo

我正在处理一个在文本框中使用小数的项目。我目前正在开发一台将十进制分隔符设置为","而不是"。"所以在将文本字符串解析为十进制时我不得不使用这句话:

decimal number = Decimal.Parse(number.Text, CultureInfo.InvariantCulture);

现在...... CultureInfo.InvariantCulture是正确的做法,还是应该使用CurrentCulture?

谢谢,

的Matias。

2 个答案:

答案 0 :(得分:4)

对于用户输入,您通常需要CultureInfo.CurrentCulture使用对你来说不自然的语言环境的事实不是通常的用户案例 - 如果用户在整个系统中有,作为小数点,那么他们很可能习惯使用它,而不是您首选的.。换句话说,当您在具有类似语言环境的系统上进行测试时,学会使用,而非. - 这是使语言环境测试变得有用的部分原因:)

另一方面,如果你是将值存储在配置文件或类似的内容中,您确实想使用CultureInfo.InvariantCulture

这个想法很简单 - 是用户的数据(=> CurrentCulture),还是应该是全局的(=> InvariantCulture)?

答案 1 :(得分:0)

如果你做了一个正确的国际化计划......

A)如果您使用的是Winforms或WPF,或者通常用户将在程序的机器上“工作”,那么应该使用CurrentCulture

进行输入解析

B)如果您是网络编程,那么用户应该能够选择其文化,而CurrentCulture(网络服务器的文化)应仅用作默认

然后,

A)您“内部”保存的数据(因此要编写然后由您的程序读取)应使用InvariantCulture

B)与其他应用程序交换的数据最好用InvariantCulture编写(除非另一个应用程序编写得很糟糕且需要特定格式),

C)导出到用户的文件应遵循先前的规则(关于用户界面的规则),除非您使用像XML这样的“标准定义格式”(然后使用Xml格式化程序)