Czy ktokolwiek mógłby podać przykład, aby zademonstrować użycie niezmiennej kultury ? Nie rozumiem, co opisuje dokumentacja.
Czy ktokolwiek mógłby podać przykład, aby zademonstrować użycie niezmiennej kultury ? Nie rozumiem, co opisuje dokumentacja.
Odpowiedzi:
Kultura niezmienna jest kulturą specjalną, która jest użyteczna, ponieważ się nie zmieni. Obecna kultura może zmieniać się od jednego użytkownika do drugiego, a nawet z jednego uruchomienia do drugiego, więc nie można polegać na tym, że pozostanie taka sama.
Możliwość korzystania z tej samej kultury za każdym razem jest bardzo ważna w kilku przepływach, na przykład serializacji: możesz mieć wartość 1,1 w jednej kulturze i 1,1 w innej. Jeśli spróbujesz przeanalizować wartość „1,1” w drugiej kulturze, analiza nie powiedzie się. Możesz jednak użyć niezmiennej kultury, aby przekonwertować liczbę na ciąg, a następnie przeanalizować ją z powrotem z dowolnego komputera z dowolnym zestawem kultur.
// 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
przestrzeni nazw.
CultureInfo.InvariantCulture
działa, ponieważ jesteś serializowany z tą samą kulturą ... to czy nie jest to to samo, co używanie CultureInfo.CurrentCulture
?
CultureInfo.InvariantCulture
, wiesz, że zawsze będziesz w stanie przeanalizować z powrotem do ułamka dziesiętnego używając CultureInfo.InvariantCulture
. Jeśli używasz CultureInfo.CurrentCulture
do serializacji, Twój użytkownik może mieć „en-US” jako bieżącą kulturę. Następny użytkownik, który przejdzie do analizy z powrotem do ułamka dziesiętnego, może mieć bieżącą kulturę, która używa znaku „,” jako separatora.
Fałszywa kultura oparta na języku angielskim z określonym zachowaniem. Świetnie jest na przykład zapisywać rzeczy do plików konfiguracyjnych, aby można je było odczytywać i zapisywać niezależnie od kultury zdefiniowanej przez użytkownika.
Zasadniczo jest to specyficzna kultura, która jest sztuczna i nie ulegnie zmianie .
Jest używany do rzeczy, które są takie same niezależnie od kultury (które nie muszą być tłumaczone na jakąś kulturę X, aby były odpowiednie)
jak na przykład - https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx . Podczas pisania pliku specyficznego dla aplikacji, z którym użytkownik nie powinien się bawić, należy użyć InvariantCulture dla wszystkich metod, które przyjmują parametr kultury.
Pamiętaj, że zgodnie z dokumentami, do których link znajduje się powyżej:
Jednak aplikacja powinna używać niezmiennej kultury tylko w przypadku procesów, które wymagają wyników niezależnych od kultury, takich jak formatowanie i analizowanie danych utrwalonych w pliku.
Kultura niezmienna jest niewrażliwa na kulturę; jest powiązany z językiem angielskim, ale nie z żadnym krajem / regionem.
CultureInfo.InvariantCulture pobiera wystąpienie niezmiennej kultury. Może być używany w prawie każdej metodzie w przestrzeni nazw System.Globalization, która wymaga kultury.
Obiekty zwracane przez właściwości, takie jak CompareInfo, DateTimeFormat i NumberFormat, również odzwierciedlają porównanie ciągów i konwencje formatowania niezmiennej kultury. Właściwość InvariantCulture jest przydatna, gdy chcesz wyświetlić trwałe dane w formacie niezależnym od kultury .
Na przykład, jeśli chcesz wyświetlić liczbę lub datę i godzinę w określonym formacie niezależnie od bieżącej kultury aplikacji, możesz użyć CultureInfo.InvariantCulture .
Jest to uniwersalny, prosty, nieregionalny język angielski i inne powiązane informacje. To jest jak język samego języka programowania. Możesz na nim polegać, konfigurując uniwersalny kalendarz; w sytuacji, gdy musisz wygenerować nazwy kontrolerów, adresy URL, nazwy delegatów ... itd. i potrzebują, aby rzeczy działały naturalnie i uniwersalnie wśród wszystkich użytkowników.