【发布时间】:2013-08-23 21:14:43
【问题描述】:
我遇到了一个有趣的情况,语言环境设置与我的 C# 应用程序混淆了,因为我没有意识到 Double.Parse 之类的方法不会将“1000”转换为 1000,但由于编号格式不同,会做一些意想不到的事情.
我的问题的一个解决方案是使用double d = double.parse( "1000", new CultureInfo("en-US")); 之类的东西。目前,我没有通过 CultureInfo。但是,我不必在整个代码中进行此更改,而是想知道是否有可能在启动时影响只是我的应用程序的语言环境。
我找到了一个article on MSDN,它说我可以使用以下代码实现此目的:
using System.Threading;
using System.Globalization;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
但它并没有说明从主线程产生的工作线程是否也会继承父级的文化。
我认为情况并非如此,因为在 .NET 4.5 中显然有一个 new CultureInfo.DefaultThreadCurrentCulture 属性指定应用程序域中所有线程的区域性,但没有任何内容像这样在 .NET 4.0 中。
任何人都可以为这个语言环境问题推荐一个好的解决方案吗?
【问题讨论】:
标签: c# .net-4.0 locale culture