Культура по умолчанию

Я использую.NET4

Я использую локализацию en-US и хочу, чтобы мое приложение работало только таким образом.

Некоторые из моих клиентов по программному обеспечению, тем не менее, из стран (например, в Норвегии), где десятичная точка представлена ​​знаком ",".

Поэтому следующая строка выдает исключение для моего норвежского клиента:

double a = double.Parse("1.5");

Я прочитал, что могу изменить CurrentCulture следующим образом:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

Проблема в том, что я должен сделать это для каждого потока отдельно. Более того, я не совсем уверен, где я буду неявно разбирать double, поэтому мне придется делать это при каждом создании потока...

Я читал, что есть решение для.NET 4.5, изменив настройку DefaultThreadCurrentCulture,

Кто-нибудь думает об общем решении для этого без обновления моей версии.NET Framework?

2 ответа

Я знаю, что вы ищете общее решение, но способ обойти эти проблемы заключается в том, чтобы проанализировать с помощью CultureInfo.InvariantCulture:

double a = double.Parse("1.5", CultureInfo.InvariantCulture);

Но будьте осторожны, это моя проблема, когда ваша строка содержит запятые и точки.

Проверьте ответы по следующей ссылке:

Как мне разобрать строку с десятичной точкой в ​​двойном?

Я думаю, что понял вашу проблему, и это можно было бы сделать без обновления вашего.Net, я надеюсь, что это поможет, так как я делал программу, я сделал начальную настройку для моей программы, в которой я прошу, так что создайте диалог, который попросит пользователя для страны а затем вы добавляете ваш десятичный код в качестве регистра case.here:-

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(); }

Другие вопросы по тегам