我使用.NET4
我使用的是en-US语言环境,并希望我的应用程序只能以这种方式工作。
我的一些软件客户端来自国家(例如挪威),小数点由','表示。
因此,下一行会为我的挪威客户端抛出异常:
double a = double.Parse("1.5");
我读过我可以按如下方式更改CurrentCulture:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
问题是我必须单独为每个线程执行此操作。而且,我不完全确定在哪里隐式解析double,所以我必须在每个Thread创建时都这样做...
通过更改DefaultThreadCurrentCulture
的设置,我已经阅读了.NET 4.5的解决方案。
如果没有升级我的.NET框架版本,有没有人会想到一个通用的解决方案?
答案 0 :(得分:4)
我知道您正在寻找一般解决方案,但我解决这些问题的方法是使用CultureInfo.InvariantCulture进行解析:
double a = double.Parse("1.5", CultureInfo.InvariantCulture);
请注意,当您的字符串同时包含逗号和句点时,我的原因就会出现。
通过以下链接查看答案:
答案 1 :(得分:-3)
我想我理解你的问题,这可以在不升级.Net的情况下完成我希望这有帮助 因为我正在编写一个程序,我为我的程序设置了一个初始设置 所以制作一个会询问用户国家的对话框,然后将你的十进制代码添加为一个案例陈述。其中: -
void AskForACountry()
{
frmEdit = new Form();
frmEdit.ShowIcon = false;
cmbxLang = new ComboBox();
frmEdit.Size = new Size(199, 113);
Button btnSetLang = new Button();
btnSetLang.Size = new Size(88, 23);
btnSetLang.Text = "Set Language";
btnSetLang.Location = new Point(40, 39);
cmbxLang.Location = new Point(28, 12);
cmbxLang.DropDownStyle = ComboBoxStyle.DropDownList;
String[] arrayCountry = { "Catalan - Spain", "Chinese - China", "Chinese - Hong Kong", "Chinese - Taiwan", "Danish - Denmark", "Dutch - Netherlands", "English - Australia", "English - Canada", "English - Great Britain", "English - US", "Finnish - Finland", "French - Canada", "French - France", "German - Germany", "Italian - Italy", "Japanese - Japan", "Korean - Korea", "Norwegian - Norway", "Polish - Poland", "Portuguese - Brazil", "Portuguese - Portugal", "Russian - Russia", "Spanish - Mexico", "Spanish - Spain", "Swedish - Sweden" };
cmbxLang.DataSource = arrayCountry.ToList();
btnSetLang.Click += new EventHandler(btnSetLang_Click);
frmEdit.Controls.Add(cmbxLang);
frmEdit.Controls.Add(btnSetLang);
MessageBox.Show("Please select a country that fits your computer's default language and dialect.", "Select A Country");
frmEdit.StartPosition = FormStartPosition.CenterScreen;
frmEdit.AcceptButton = btnSetLang;
frmEdit.ShowDialog();
}