Какова Инвариантная Культура?

Кто-либо мог дать пример для демонстрации использования Инвариантной Культуры? Я не понимаю то, что описывает документация.

165
задан Mark Amery 5 May 2017 в 10:27
поделиться

3 ответа

Инвариантная культура - это особая культура, которая полезна, потому что она не будет меняться. Текущая культура может меняться от одного пользователя к другому, или даже от одного запуска к другому, поэтому вы не можете полагаться на то, что она останется неизменной.

Возможность использовать одну и ту же культуру каждый раз очень важна в нескольких потоках, например, в сериализации: вы можете иметь значение 1,1 в одной культуре и 1.1 в другой. Если вы попытаетесь разобрать значение "1,1" во второй культуре, то парсинг завершится неудачей. Однако вы можете использовать инвариантную культуру для преобразования числа в строку и затем разобрать его обратно с любого компьютера с любым набором культур.

// Use some non-invariant culture.
CultureInfo nonInvariantCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = nonInvariantCulture;

decimal dec = 1.1m;
string convertedToString = dec.ToString();

// Simulate another culture being used,
// following code can run on another computer.
nonInvariantCulture.NumberFormat.NumberDecimalSeparator = ",";

decimal parsedDec;

try
{
    // This fails because value cannot be parsed.
    parsedDec = decimal.Parse(convertedToString);
}
catch (FormatException)
{
}

// However you always can use Invariant culture:
convertedToString = dec.ToString(CultureInfo.InvariantCulture);

// This will always work because you serialized with the same culture.
parsedDec = decimal.Parse(convertedToString, CultureInfo.InvariantCulture);
123
ответ дан 23 November 2019 в 21:09
поделиться

Он используется для вещей, которые одинаковы независимо от культуры (это не нужно переводить на какую-то культуру X, чтобы быть подходящей)

в качестве примера - https://msdn.microsoft.com/en-us/library/4c5zdc6a (v = vs.100) .aspx . Когда вы записываете файл для конкретного приложения, с которым пользователь не должен возиться, вы должны использовать InvariantCulture для всех методов, которые принимают параметр культуры.

Обратите внимание, что согласно документации, указанной выше:

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

7
ответ дан 23 November 2019 в 21:09
поделиться

Поддельная культура, основанная на английском языке с определенным поведением. Замечательно записывать, например, что-то в файлы конфигурации, чтобы его можно было читать и записывать независимо от культуры, определенной пользователем.

В основном это определенная культура, которая является искусственной и не изменится .

108
ответ дан 23 November 2019 в 21:09
поделиться
Другие вопросы по тегам:

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