C# 默认文化

C# 默认文化,c#,.net-4.0,internationalization,cultureinfo,culture,C#,.net 4.0,Internationalization,Cultureinfo,Culture,我使用.NET4 我使用en-US语言环境,只希望我的应用程序以这种方式工作。 不过,我的一些软件客户来自小数点用“,”表示的国家(例如挪威) 因此,下一行为我的挪威客户抛出异常: double a = double.Parse("1.5"); 我已经读到我可以按如下方式更改当前区域性: Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 问题是我必须对每个线程分别执行此操作。此外,我不完全确定我将在哪里隐式解析一个

我使用.NET4

我使用en-US语言环境,只希望我的应用程序以这种方式工作。

不过,我的一些软件客户来自小数点用“,”表示的国家(例如挪威)

因此,下一行为我的挪威客户抛出异常:

double a = double.Parse("1.5");
我已经读到我可以按如下方式更改当前区域性:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
问题是我必须对每个线程分别执行此操作。此外,我不完全确定我将在哪里隐式解析一个double,所以我将不得不在每个线程创建时这样做

我已经读到.NET 4.5有一个解决方案,通过更改
DefaultThreadCurrentCulture
的设置


有没有人想到在不升级我的.NET framework版本的情况下解决此问题的通用解决方案?

我知道您正在寻找通用解决方案,但我解决这些问题的方法是使用CultureInfo.InvariantCulture解析:

double a = double.Parse("1.5", CultureInfo.InvariantCulture);
不过要小心,当字符串同时包含逗号和句点时,这会导致问题

检查以下链接中的答案:


我想我理解你的问题,这可以在不升级.Net的情况下完成。我希望这能有所帮助 当我在做一个程序时,我为我的程序做了一个初始设置,我在其中询问 因此,创建一个对话框,要求用户输入一个国家,然后添加十进制代码作为案例说明。此处:-

void askforaccountry()
{
frmEdit=新形式();
frmEdit.ShowIcon=false;
cmbxLang=新组合框();
初始尺寸=新尺寸(199113);
按钮btnSetLang=新按钮();
尺寸=新尺寸(88,23);
btnSetLang.Text=“设置语言”;
BTN标记位置=新点(40,39);
cmbxLang.位置=新点(28,12);
cmbxLang.DropDownStyle=ComboBoxStyle.DropDownList;
字符串[]arrayCountry={“加泰罗尼亚-西班牙”、“中国-中国”、“中国-香港”、“中国-台湾”、“丹麦-丹麦”、“荷兰-荷兰”、“英国-澳大利亚”、“英国-加拿大”、“英国-美国”、“芬兰-芬兰”、“法国-加拿大”、“法国-法国”、“德国”、“意大利-意大利”,“日本”、“韩国”、“挪威-挪威”、“波兰-波兰”、“葡萄牙-巴西”、“葡萄牙-葡萄牙”、“俄罗斯”、“西班牙-墨西哥”、“西班牙-西班牙”、“瑞典”};
cmbxLang.DataSource=arrayCountry.ToList();
btnSetLang.Click+=新建事件处理程序(btnSetLang\u Click);
frmEdit.Controls.Add(cmbxLang);
frmEdit.Controls.Add(btnSetLang);
MessageBox.Show(“请选择适合计算机默认语言和方言的国家/地区。”,“选择国家/地区”);
frmEdit.StartPosition=FormStartPosition.CenterScreen;
frmEdit.AcceptButton=btnSetLang;
frmEdit.ShowDialog();

}

您可以编写自己的解析方法,并在这些方法中指定转换区域性。对于c#应用程序,您会在哪里进行隐式转换?@mcy,我指的是一个更通用的解决方案,在该解决方案中,我不必找出我在代码中解析的所有位置……关于避免升级,需要注意的一点是,Microsoft正在终止支持rt for.NET 4.0 2016年1月至1月,因此不升级的生命周期有限。问题是,为什么您的客户端会有该字符串
“1.5”
。您应该将这些值存储为
double
,如果客户端将其作为输入提供给您,您无论如何也无法更改。这不是真正的“解决方法”,而是“正确的方法”“。当您知道所使用的区域性时,显式指定区域性确实是正确的解决方案。而且,
InvariantCulture
似乎是OP应该使用的一个,因为数据可能来自用户输入以外的其他地方。从我的旧程序中获取。希望这有帮助:p或者我没能理解这个问题