CultureInfo. CurrentCulture, действительно необходимый в Строке. Формат ()?

Я не знаю, какой тип Tuple2 вы все еще используете, но я предполагаю, что это Tuple2 для Scala. Scala Tuple2 это неизменный. Вы не можете изменить значение неизменяемого объекта, вы должны воссоздать его. Зачем? Scala Tuple2 представляет собой функциональное программирование «Структура данных», поэтому, как и вся концепция функционального программирования, «оно пытается уменьшить побочный эффект. Вы можете использовать функцию .copy, чтобы воссоздать его, как хотите. Ниже приведен пример кода: [ 111]

 @Test
    public void test() {
        Tuple2<String,Long> tuple = new Tuple2<>("a",1l);
        Tuple2<String,Long> actual = tuple.copy(tuple._1,tuple._2+1);
        Tuple2<String,Long> expected = new Tuple2<>("a",2l);
        assertEquals(actual,expected);
    }

29
задан abatishchev 12 December 2011 в 18:07
поделиться

4 ответа

В целом Вы захотите использовать InvariantCulture, если строка, которую Вы генерируете, должна быть сохранена способом, который независим от культуры текущего пользователя (например, в реестре, или в файле).

Вы захотите использовать CurrentCulture для строк, которые должны быть представлены в UI текущему пользователю (формы, отчеты).

Тонкие ошибки могут возникнуть при использовании CurrentCulture, где необходимо использовать InvariantCulture: ошибки, которые только обнаруживаются, когда у Вас есть многочисленные пользователи с различными культурами, получающими доступ к тому же ключу реестра или файлу, или если пользователь изменяет свою культуру по умолчанию.

Явно определяющий CurrentCulture (значение по умолчанию, если аргумент IFormatProvider опущен), по существу документация, которая демонстрирует, что Вы рассмотрели вышеупомянутое и что сгенерированная строка должна использовать культуру текущего пользователя. Вот почему FxCop рекомендует определить аргумент IFormatProvider.

32
ответ дан Joe 28 November 2019 в 01:20
поделиться

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

6
ответ дан Spikolynn 28 November 2019 в 01:20
поделиться

Если Вы не определите IFormatProvider (или эквивалентно передадите null), то большинство типов аргумента в конечном счете упадет до того, чтобы быть отформатированным согласно CultureInfo.CurrentCulture. То, где это становится интересным, - то, что можно определить пользовательское IFormatProvider, который может получить первую трещину при форматировании аргументов или переопределить культуру форматирования в зависимости от другого контекста.

Примечание, что CultureInfo.CurrentCulture форматирование аргумента влияния, не выбор ресурса; выбором ресурса управляют CultureInfo.CurrentUICulture.

19
ответ дан Jeffrey Hantin 28 November 2019 в 01:20
поделиться

Особенно полезно, если Вы заботитесь о локализации (Глобализация) в Вашем приложении. Таким образом, если Вы хотите, чтобы Ваше приложение поддерживало несколько языков и культуры определенные форматы, тогда необходимо использовать это.

4
ответ дан Ian P 28 November 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: