Qual é a cultura invariável?

Alguém poderia dar um exemplo para demonstrar o uso da Cultura Invariável ? Eu não entendo o que a documentação descreve.

A cultura invariável é uma cultura especial que é útil porque não mudará. A cultura atual pode mudar de um usuário para outro, ou mesmo de uma corrida para outra, então você não pode confiar que ela permaneça a mesma coisa.

Ser capaz de usar a mesma cultura a cada vez é muito importante em vários streams, por exemplo, serialização: você pode ter 1,1 valor em uma cultura e 1,1 em outra. Se você tentar analisar o valor “1,1” na segunda cultura, a análise falhará. No entanto, você pode usar a cultura invariável para converter um número em uma string e depois analisá-lo de qualquer computador com qualquer conjunto de cultura.

// 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); 

Uma cultura falsa baseada no inglês com comportamento definido. Ótimo para escrever, por exemplo, coisas em arquivos de configuração para que ele possa ser lido e escrito independentemente da cultura que o usuário definiu.

Basicamente é uma cultura específica que é artificial e não irá mudar .

É usado para coisas que são as mesmas, independentemente da cultura (que não precisa ser traduzido para alguma cultura X para ser apropriado)

como para um exemplo – https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx . Quando você escreve um arquivo específico do aplicativo com o qual o usuário não deve estar mexendo, você deve usar o InvariantCulture para todos os methods que levam em um parâmetro de cultura.

Observe que, de acordo com os documentos vinculados acima:

No entanto, um aplicativo deve usar a cultura invariável somente para processos que exigem resultados independentes de cultura, como formatar e analisar dados que persistem em um arquivo.

A cultura invariável é insensível à cultura; está associado ao idioma inglês, mas não a nenhum país / região.Você pode usar a cultura invariável para operações de cadeia de caracteres sensíveis à cultura que não são afetadas pelas convenções da cultura de segmentos atual e que são consistentes entre culturas.

CultureInfo.InvariantCulture recupera uma instância da cultura invariável. Ele pode ser usado em praticamente qualquer método no namespace System.Globalization que requer uma cultura. Os objects retornados por propriedades, como CompareInfo, DateTimeFormat e NumberFormat, também refletem as convenções de comparação e formatação de strings da cultura invariável.

Ao contrário dos dados sensíveis à cultura, que estão sujeitos a alterações por personalização do usuário ou por atualizações no .NET Framework ou no sistema operacional, os dados da cultura invariável são estáveis ​​ao longo do tempo e em culturas instaladas e não podem ser personalizados pelos usuários. Isso torna a cultura invariável particularmente útil para operações que exigem resultados independentes de cultura, como operações de formatação e análise que persistem dados formatados ou operações de ordenação e ordenação que exigem que os dados sejam exibidos em uma ordem fixa, independentemente da cultura.

A propriedade InvariantCulture é útil quando você deseja exibir dados persistentes em um formato independente de cultura .

Por exemplo, se você deseja exibir um número ou datetime em um formato específico independente da cultura atual do aplicativo, você pode usar CultureInfo.InvariantCulture .