CultureInfo.InvariantCulture CultureInfo.InvariantCulture CultureInfo.InvariantCulture CultureInfo.InvariantCulture Property

Definição

Obtém o objeto CultureInfo que é independente de cultura (invariável).Gets the CultureInfo object that is culture-independent (invariant).

public:
 static property System::Globalization::CultureInfo ^ InvariantCulture { System::Globalization::CultureInfo ^ get(); };
public static System.Globalization.CultureInfo InvariantCulture { get; }
member this.InvariantCulture : System.Globalization.CultureInfo
Public Shared ReadOnly Property InvariantCulture As CultureInfo

Valor da propriedade

O objeto que é independente de cultura (invariável).The object that is culture-independent (invariant).

Comentários

A cultura invariável não faz diferenciação de cultura; ele está associado com o idioma inglês, mas não com qualquer país/região.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. Especificar a cultura invariável por nome usando uma cadeia de caracteres vazia ("") na chamada para um CultureInfo método de instanciação.You specify the invariant culture by name by using an empty string ("") in the call to a CultureInfo instantiation method. CultureInfo.InvariantCulture também recupera uma instância da cultura invariável.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Ele pode ser usado em quase qualquer método no System.Globalization namespace que requer uma cultura.It can be used in almost any method in the System.Globalization namespace that requires a culture. Os objetos retornados pelas propriedades como CompareInfo, DateTimeFormat, e NumberFormat também refletem a comparação de cadeia de caracteres e as convenções da cultura invariável de formatação.The objects returned by properties such as CompareInfo, DateTimeFormat, and NumberFormat also reflect the string comparison and formatting conventions of the invariant culture.

Ao contrário dos dados sensíveis à cultura, que está sujeita a alterações pela personalização de usuário ou pelas atualizações para o .NET Framework ou o sistema operacional, dados de cultura invariável é estáveis ao longo do tempo e entre culturas instaladas e não podem ser personalizados pelos usuários.Unlike culture-sensitive data, which is subject to change by user customization or by updates to the .NET Framework or the operating system, invariant culture data is stable over time and across installed cultures and cannot be customized by users. Isso torna a cultura invariável particularmente útil para operações que exigem que os resultados de independente de cultura, como formatação e análise de operações que persistem formatado dados, ou de classificação e ordenação de operações que exigem que dados exibidos em um ordem fixa independentemente da cultura.This makes the invariant culture particularly useful for operations that require culture-independent results, such as formatting and parsing operations that persist formatted data, or sorting and ordering operations that require that data be displayed in a fixed order regardless of culture.

Operações da cadeia de caracteresString Operations

Você pode usar a cultura invariável para operações de cadeia de caracteres sensíveis à cultura que não são afetados pelas convenções da cultura do thread atual e que são consistentes entre culturas.You can use the invariant culture for culture-sensitive string operations that are not affected by the conventions of the current thread culture and that are consistent across cultures. Por exemplo, convém dados classificados para aparecer em uma ordem fixa ou aplicar um conjunto padrão de convenções de maiusculas e minúsculas em cadeias de caracteres, independentemente da cultura do thread atual.For example, you may want sorted data to appear in a fixed order or apply a standard set of casing conventions to strings regardless of the current thread culture. Para fazer isso, você passa o InvariantCulture objeto para um método que tem um CultureInfo parâmetro, como Compare(String, String, Boolean, CultureInfo) e ToUpper(CultureInfo).To do this, you pass the InvariantCulture object to a method that has a CultureInfo parameter, such as Compare(String, String, Boolean, CultureInfo) and ToUpper(CultureInfo).

Mantendo dadosPersisting Data

O InvariantCulture propriedade pode ser usada para manter os dados em um formato independente de cultura.The InvariantCulture property can be used to persist data in a culture-independent format. Isso fornece um formato conhecido que não é alterado e que pode ser usado para serializar e desserializar dados entre culturas.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. Depois que os dados são desserializados, podem ser formatado adequadamente com base nas convenções culturais do usuário atual.After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.

Por exemplo, se você optar por manter os dados de data e hora no formato de cadeia de caracteres, você pode passar o InvariantCulture do objeto para o DateTime.ToString(String, IFormatProvider) ou DateTimeOffset.ToString(IFormatProvider) método para criar a cadeia de caracteres e você pode passar o InvariantCulture do objeto para o DateTime.Parse(String, IFormatProvider) ou DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) método para converter a cadeia de caracteres de volta para um valor de data e hora.For example, if you choose to persist date and time data in string form, you can pass the InvariantCulture object to the DateTime.ToString(String, IFormatProvider) or DateTimeOffset.ToString(IFormatProvider) method to create the string, and you can pass the InvariantCulture object to the DateTime.Parse(String, IFormatProvider) or DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) method to convert the string back to a date and time value. Essa técnica garante que a data subjacente e valores de hora não são alterados quando os dados são lidos ou gravados por usuários de diferentes culturas.This technique ensures that the underlying date and time values do not change when the data is read or written by users from different cultures.

O exemplo a seguir usa a cultura invariável para persistir um DateTime valor como uma cadeia de caracteres.The following example uses the invariant culture to persist a DateTime value as a string. Em seguida, ele analisa a cadeia de caracteres e exibe seu valor, usando as convenções de formatação das culturas alemão (Alemanha) e francês (França).It then parses the string and displays its value by using the formatting conventions of the French (France) and German (Germany) cultures.

using System;
using System.IO;
using System.Globalization;

public class Example 
{
   public static void Main() 
   {
      // Persist the date and time data.
      StreamWriter sw = new StreamWriter(@".\DateData.dat");
      
      // Create a DateTime value.      
      DateTime dtIn = DateTime.Now;
      // Retrieve a CultureInfo object.
      CultureInfo invC = CultureInfo.InvariantCulture;
      
      // Convert the date to a string and write it to a file.
      sw.WriteLine(dtIn.ToString("r", invC));
      sw.Close();

      // Restore the date and time data.
      StreamReader sr = new StreamReader(@".\DateData.dat");
      String input;
      while ((input = sr.ReadLine()) != null) 
      {
         Console.WriteLine("Stored data: {0}\n" , input);    

         // Parse the stored string.
         DateTime dtOut = DateTime.Parse(input, invC, DateTimeStyles.RoundtripKind);

         // Create a French (France) CultureInfo object.
         CultureInfo frFr = new CultureInfo("fr-FR");
         // Displays the date formatted for the "fr-FR" culture.
         Console.WriteLine("Date formatted for the {0} culture: {1}" , 
                           frFr.Name, dtOut.ToString("f", frFr));

         // Creates a German (Germany) CultureInfo object.
         CultureInfo deDe= new CultureInfo("de-De");
         // Displays the date formatted for the "de-DE" culture.
         Console.WriteLine("Date formatted for {0} culture: {1}" , 
                           deDe.Name, dtOut.ToString("f", deDe));
      }
      sr.Close();
   }
}
// The example displays the following output:
//    Stored data: Tue, 15 May 2012 16:34:16 GMT
//    
//    Date formatted for the fr-FR culture: mardi 15 mai 2012 16:34
//    Date formatted for de-DE culture: Dienstag, 15. Mai 2012 16:34
Imports System.Globalization
Imports System.IO

Module Example
   Public Sub Main()
      ' Persist the date and time data.
      Dim sw As New StreamWriter(".\DateData.dat")
      
      ' Create a DateTime value.      
      Dim dtIn As DateTime = DateTime.Now
      ' Retrieve a CultureInfo object.
      Dim invC As CultureInfo = CultureInfo.InvariantCulture
      
      ' Convert the date to a string and write it to a file.
      sw.WriteLine(dtIn.ToString("r", invC))
      sw.Close()

      ' Restore the date and time data.
      Dim sr As New StreamReader(".\DateData.dat")
      Dim input As String = String.Empty
      Do While sr.Peek() >= 0 
         input = sr.ReadLine()
         Console.WriteLine("Stored data: {0}" , input)    
         Console.WriteLine()
         
         ' Parse the stored string.
         Dim dtOut As DateTime = DateTime.Parse(input, invC, DateTimeStyles.RoundtripKind)

         ' Create a French (France) CultureInfo object.
         Dim frFr As New CultureInfo("fr-FR")
         ' Displays the date formatted for the "fr-FR" culture.
         Console.WriteLine("Date formatted for the {0} culture: {1}" , 
                           frFr.Name, dtOut.ToString("f", frFr))

         ' Creates a German (Germany) CultureInfo object.
         Dim deDe As New CultureInfo("de-De")
         ' Displays the date formatted for the "de-DE" culture.
         Console.WriteLine("Date formatted for {0} culture: {1}" , 
                           deDe.Name, dtOut.ToString("f", deDe))
      Loop
      sr.Close()
   End Sub
End Module
' The example displays the following output:
'    Stored data: Tue, 15 May 2012 16:34:16 GMT
'    
'    Date formatted for the fr-FR culture: mardi 15 mai 2012 16:34
'    Date formatted for de-DE culture: Dienstag, 15. Mai 2012 16:34

Decisões de segurançaSecurity Decisions

Se você estiver fazendo uma decisão de segurança (por exemplo, se deseja permitir o acesso a um recurso do sistema) com base no resultado de uma comparação de cadeia de caracteres ou uma alteração, você não deve usar a cultura invariável.If you are making a security decision (such as whether to allow access to a system resource) based on the result of a string comparison or a case change, you should not use the invariant culture. Em vez disso, você deve executar uma comparação ordinal diferencia maiusculas de minúsculas ou maiusculas de minúsculas, chamando um método que inclui um StringComparison parâmetro e fornecendo o StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase como um argumento.Instead, you should perform a case-sensitive or case-insensitive ordinal comparison by calling a method that includes a StringComparison parameter and supplying either StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase as an argument. Código que executa operações de cadeia de caracteres sensíveis à cultura pode causar vulnerabilidades de segurança, se a cultura atual é alterada ou se a cultura no computador que está executando o código é diferente da cultura que é usada para testar o código.Code that performs culture-sensitive string operations can cause security vulnerabilities if the current culture is changed or if the culture on the computer that is running the code differs from the culture that is used to test the code. Em contraste, uma comparação ordinal depende exclusivamente o valor binário dos caracteres comparados.In contrast, an ordinal comparison depends solely on the binary value of the compared characters.

Aplica-se a

Veja também