Alguém poderia dar um exemplo para demonstrar o uso da cultura invariável ? Não entendo o que a documentação descreve.
Alguém poderia dar um exemplo para demonstrar o uso da cultura invariável ? Não entendo o que a documentação descreve.
Respostas:
A cultura invariável é uma cultura especial que é útil porque não muda. A cultura atual pode mudar de um usuário para outro, ou mesmo de uma execução para outra, para que você não possa confiar na mesma.
Ser capaz de usar a mesma cultura a cada vez é muito importante em vários fluxos, 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 sequência e, posteriormente, analisá-lo novamente em qualquer computador com qualquer conjunto de culturas.
// 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
espaço para nome.
CultureInfo.InvariantCulture
funciona porque você serializou com a mesma cultura .... então não é o mesmo que usar CultureInfo.CurrentCulture
?
CultureInfo.InvariantCulture
, você saberá que sempre poderá analisar usando um decimal CultureInfo.InvariantCulture
. Se você CultureInfo.CurrentCulture
costuma serializar, seu usuário pode ter "en-US" como a cultura atual. O próximo usuário que o analisa de volta para um decimal pode ter uma cultura atual que use "," para um separador.
Uma cultura falsa baseada no inglês com comportamento definido. É ótimo escrever, por exemplo, coisas nos arquivos de configuração para que possam ser lidos e gravados, independentemente da cultura que o usuário definiu.
Basicamente, é uma cultura específica que é artificial e não muda .
É usado para coisas iguais, independentemente da cultura (que não precisa ser traduzida para alguma cultura X para ser apropriada)
como por exemplo - https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx . Ao escrever um arquivo específico do aplicativo com o qual o usuário não deve estar brincando, use o InvariantCulture para todos os métodos que usam um parâmetro de cultura.
Observe que, de acordo com os documentos vinculados acima:
No entanto, um aplicativo deve usar a cultura invariável apenas para processos que exijam resultados independentes da cultura, como formatação e análise de dados persistentes 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.
CultureInfo.InvariantCulture recupera uma instância da cultura invariável. Ele pode ser usado em praticamente qualquer método no espaço para nome System.Globalization que requer uma cultura.
Os objetos retornados por propriedades como CompareInfo, DateTimeFormat e NumberFormat também refletem as convenções de comparação e formatação de string da cultura invariável. A propriedade InvariantCulture é útil quando você deseja exibir dados persistentes em um formato independente da cultura .
Por exemplo, se você deseja exibir um número ou data e hora em um formato específico, independentemente da cultura atual do aplicativo, é possível usar CultureInfo.InvariantCulture .
É um idioma inglês universal simples, não regional e universal, e outras informações relacionadas. É como a linguagem da própria linguagem de programação. Você pode confiar nele para configurar um calendário universal; na situação em que você precisa gerar nomes de controladores, URLs, delegar nomes ... etc. e precisa de coisas para agir natural e universalmente entre todos os usuários.