我正在做一个在文本框中使用小数的项目。我目前正在开发一台机器,它的十进制分隔符设置为",“而不是”。因此,在将文本字符串解析为十进制时,我不得不使用这个句子:
decimal number = Decimal.Parse(number.Text, CultureInfo.InvariantCulture);现在..。CultureInfo.InvariantCulture是正确的做法,还是应该使用CurrentCulture?
谢谢,
玛蒂亚斯。
发布于 2015-03-13 13:14:24
对于用户输入,通常需要CultureInfo.CurrentCulture。您使用的区域设置并不是通常的用户情况--如果用户在整个系统中使用,作为小数点,那么他们可能已经习惯于使用这个位置,而不是您喜欢的.。换句话说,当您在这样一个具有区域设置的系统上进行测试时,请学习使用,而不是. --这是使区域设置测试有用的部分内容:)
另一方面,如果您正在将值存储在配置文件中或类似的东西中,那么您确实希望使用CultureInfo.InvariantCulture。
这个想法相当简单--是用户的数据(=> CurrentCulture),还是应该是全局的(=> InvariantCulture)?
发布于 2015-03-13 13:17:04
如果你做了正确的国际化程序..。
( A)如果您使用的是Winforms或WPF,或者通常用户将在程序的机器上“工作”,那么输入解析应该使用CurrentCulture完成。
B)如果您正在进行web编程,那么用户应该能够选择它的区域性,而CurrentCulture (web服务器的区域性)应该仅用作默认的。
然后,
( A)保存“内部”的数据(因此要编写,然后由程序读取)应该使用InvariantCulture,
( B)与其他应用程序交换的数据最好用InvariantCulture编写(除非另一个应用程序编写得不好,并且需要特定的格式),
( C)导出给用户的文件应该遵循前面的规则(关于用户界面的规则),除非您使用的是像XML这样的“标准定义格式”(然后使用Xml格式化程序)。
https://stackoverflow.com/questions/29033144
复制相似问题