Чи може хтось навести приклад для демонстрації використання інваріантної культури ? Я не розумію, що описується в документації.
Чи може хтось навести приклад для демонстрації використання інваріантної культури ? Я не розумію, що описується в документації.
Відповіді:
Інваріантна культура - це особлива культура, яка корисна, оскільки не зміниться. Поточна культура може змінюватися від одного користувача до іншого або навіть від одного до іншого, тому ви не можете розраховувати на те, що він залишається таким же.
Можливість використовувати одну і ту ж культуру кожного разу дуже важливо в декількох потоках, наприклад, серіалізації: ви можете мати 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);
System.Globalization
просторі імен.
CultureInfo.InvariantCulture
твори, тому що ви серіалізувались з тією ж культурою .... то чи не те саме, що використовувати CultureInfo.CurrentCulture
?
CultureInfo.InvariantCulture
то ви знаєте, що ви завжди зможете розібратися до десяткової, використовуючи CultureInfo.InvariantCulture
. Якщо ви використовуєте CultureInfo.CurrentCulture
серіалізацію, у вашого користувача може бути "en-US" як їх поточна культура. Наступний користувач, який поверне його до десяткового числа, може мати поточну культуру, яка використовує "," для роздільника.
Підроблена культура, заснована на англійській мові з визначеною поведінкою. Чудово виписувати, наприклад, вміст у конфігураційні файли, щоб його можна було прочитати та записати незалежно від культури, яку визначив користувач.
В основному це специфічна культура, яка є штучною і не зміниться .
Він використовується для речей, що є однаковими незалежно від культури (що не потрібно переводити на деяку культуру X, щоб відповідати)
як приклад - https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx . Коли ви виписуєте файл для програми, з яким користувач не повинен возитися, ви повинні використовувати InvariantCulture для всіх методів, що приймають параметр культури.
Зауважте, що за документами, зв'язаними вище:
Однак додаток має використовувати інваріантну культуру лише для процесів, які потребують незалежних від культури результатів, таких як форматування та аналіз даних, які зберігаються у файлі.
Інваріантна культура нечутлива до культури; він асоціюється з англійською мовою, але не з будь-якою країною / регіоном.
CultureInfo.InvariantCulture отримує екземпляр інваріантної культури. Його можна використовувати майже в будь-якому методі в просторі імен System.Globalization, який вимагає культури.
Об'єкти, повернені такими властивостями, як CompareInfo, DateTimeFormat і NumberFormat, також відображають умовні умови порівняння та форматування інваріантної культури. Властивість InvariantCulture стане корисною, коли потрібно відображати збережені дані у форматі, незалежному від культури .
Наприклад, якщо ви хочете відобразити номер або час у певному форматі, незалежному від поточної культури програми, ви можете використовувати CultureInfo.InvariantCulture .
Це універсальна проста нерегіональна англійська мова та інша пов'язана з цим інформація. Це як мова самої мови програмування. Ви можете розраховувати на це при створенні універсального календаря; в ситуації, коли вам потрібно генерувати імена контролерів, URL-адреси, імена делегата ... тощо. і потрібні речі, щоб діяти природно і універсально серед усіх користувачів.