【发布时间】:2015-07-20 18:01:31
【问题描述】:
我正在用 C# 编写一个控制台应用程序,它大量使用字符串比较以及数字的格式化和解析,这些数字是从文本文件读取和写入的。
理想情况下,该程序在每台计算机上的行为应该完全相同,但是在具有不同语言环境的计算机上对其进行测试后,我意识到 C# 中提到的功能会自动使用当前语言环境的格式。这是不幸的,因为系统的语言环境会导致我的程序行为发生变化,甚至导致程序崩溃(即,当使用错误的系统特定的小数分隔符解析数字时)。
我正在寻找一种方法来告诉编译器/程序忽略当前程序范围内的语言环境并改用默认/英语语言环境。
我见过提到的解决方案可以更改线程的默认语言环境。
我不确定使用 linq、parallel foreach 等如何解决问题。所以理想情况下,我只想为整个程序设置英语/默认语言环境以避免任何事故。我该怎么做?
【问题讨论】:
-
C# 中的大多数解析和格式化方法都有一个采用
IFormatProvider的重载,您可以使用CultureInfo.InvariantCulture指定您不想使用当前区域性进行解析和格式化。 -
@juharr:这很难很好地应用 DRY 原则,而且很容易出错。在一个包含许多提到的字符串操作的程序中,您有时一定会忘记添加格式提供程序。
-
如果您使用代码分析,则有一条规则会标记它们。
标签: c# localization