2015-03-13 3 views
2

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

decimal number = Decimal.Parse(number.Text, CultureInfo.InvariantCulture); 

Теперь ... Является ли CultureInfo.InvariantCulture правильно делать или я должен использовать CurrentCulture вместо этого?

Спасибо,

Matias.

+3

«right» and «wrong» находятся в глазу наблюдателя :) – xanatos

+0

Можете ли вы показать примерное значение 'number.Text'? –

+0

Вот пример number.text: 0.9 – Matias

ответ

4

Для ввода пользователем вы обычно хотите CultureInfo.CurrentCulture. Тот факт, что вы -, с использованием языкового стандарта, который не является естественным для вас, - это не обычный случай пользователя - если пользователь имеет , в качестве десятичной точки во всей своей системе, они, вероятно, используются для использования этого вместо ваших предпочтительных .. Другими словами, в то время как вы проводите тестирование в системе с локалью, как это, научиться использовать , вместо . - это часть того, что делает тестирование локали полезным :)

С другой стороны, если вы например сохраняя значения в файле конфигурации или что-то в этом роде, вы действительно хотите использовать CultureInfo.InvariantCulture.

Мысль довольно проста - это данные пользователя (=>CurrentCulture), или он должен быть глобальным (=>InvariantCulture)?

+0

Спасибо Luaan, что имеет смысл, я думаю, это не программирование, а то, что мне нужно с точки зрения пользовательского интерфейса, а также внутренней обработки кода. – Matias

0

Если вы делаете правильно интернационализированную программу ...

A) Если вы используете Winforms или WPF или вообще пользователя будет «работать» на машине программы, то вход синтаксического анализа должно быть сделано с CurrentCulture

B) Если вы веб-программирование, то пользователь должен иметь возможность выбрать свою культуру, и CurrentCulture (культура веб-сервера), следует использовать только по умолчанию

а потом ,

A) данные, которые вы сохранить «внутри» (так записать, а затем читать вашу программу) должны использовать InvariantCulture,

B) данные, которые вы перепутать с другими приложениями будет лучше записать с InvariantCulture (если другое приложение плохо написано и требует определенного формата),

C) файлы, которые вы экспортируете пользователю, должны следовать предыдущим правилам (те, которые касаются пользовательского интерфейса), если вы не используете «стандартный формат», например XML (тогда используйте Xml formatters)

+0

Спасибо Xanatos, я работа с приложением Windows Form – Matias

Смежные вопросы