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

Definice

CultureInfo Získá objekt, který je nezávislý na jazykové verzi (invariantní).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

Hodnota vlastnosti

Objekt, který je nezávislý na jazykové verzi (invariantní).The object that is culture-independent (invariant).

Poznámky

Invariantní jazyková verze je nezávislá na jazykové verzi; je přidružená k anglickému jazyku, ale ne k žádné zemi nebo oblasti.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. Invariantní jazyková verze podle názvu se zadává pomocí prázdného řetězce ("") ve volání CultureInfo metody vytváření instancí.You specify the invariant culture by name by using an empty string ("") in the call to a CultureInfo instantiation method. CultureInfo.InvariantCulturetaké načte instanci neutrální jazykové verze.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Dá se použít téměř jakoukoli metodou v System.Globalization oboru názvů, která vyžaduje jazykovou verzi.It can be used in almost any method in the System.Globalization namespace that requires a culture. Objekty vracené vlastnostmi CompareInfo, jako je, DateTimeFormat, a NumberFormat také odrážejí konvence porovnávání a formátování řetězců pro invariantní jazykovou verzi.The objects returned by properties such as CompareInfo, DateTimeFormat, and NumberFormat also reflect the string comparison and formatting conventions of the invariant culture.

Na rozdíl od dat závislých na jazykové verzi, která se mohou změnit uživatelským přizpůsobením nebo aktualizacemi .NET Framework nebo operačního systému, jsou neutrální data jazykové verze stabilní v čase a v rámci nainstalovaných kultur a nemohou být upravována uživateli.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. Díky tomu je neutrální jazyková verze obzvláště užitečná pro operace, které vyžadují výsledky nezávislé na jazykové verzi, například operace formátování a analýzy, které uchovávají formátovaná data nebo operace řazení a řazení, které vyžadují, aby se data zobrazovala v pevná objednávka bez ohledu na jazykovou verzi.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.

Operace s řetězciString Operations

Můžete použít neutrální jazykovou verzi pro operace s řetězci závislé na jazykové verzi, které nejsou ovlivněny konvencemi aktuální jazykové verze vlákna a které jsou konzistentní napříč kulturami.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. Například můžete chtít, aby se seřazená data zobrazovala v pevně uvedeném pořadí, nebo použít standardní sadu konvencí pro velká písmena pro řetězce bez ohledu na aktuální jazykovou verzi vlákna.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. K tomu je třeba InvariantCulture předat objekt metodě, která CultureInfo má parametr, například Compare(String, String, Boolean, CultureInfo) a 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).

Trvalá dataPersisting Data

InvariantCulture Vlastnost lze použít k uchování dat ve formátu nezávislém na jazykové verzi.The InvariantCulture property can be used to persist data in a culture-independent format. To poskytuje známý formát, který se nemění a který lze použít k serializaci a deserializaci dat napříč kulturami.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. Po deserializaci dat je lze vhodně formátovat podle kulturní konvence aktuálního uživatele.After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.

Například pokud se rozhodnete zachovat data data InvariantCulture a času ve formě řetězce, můžete předat objektu DateTime.ToString(String, IFormatProvider) metodě nebo DateTimeOffset.ToString(IFormatProvider) k vytvoření řetězce DateTime.Parse(String, IFormatProvider) a můžete předat InvariantCulture objekt do nebo DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) Metoda pro převod řetězce zpět na hodnotu data a času.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. Tento postup zajistí, že se základní hodnoty data a času nemění, když uživatelé čtou nebo zapisují data z různých jazykových verzí.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.

Následující příklad používá invariantní jazykovou verzi k uchování DateTime hodnoty jako řetězce.The following example uses the invariant culture to persist a DateTime value as a string. Poté analyzuje řetězec a zobrazí jeho hodnotu pomocí formátovacích úmluv pro jazykové verze francouzština (Francie) a němčina (Německo).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

Rozhodování o zabezpečeníSecurity Decisions

Pokud provádíte rozhodnutí o zabezpečení (například zda má být povolen přístup k systémovému prostředku) na základě výsledku porovnání řetězců nebo změny velikosti písmen, neměli byste používat invariantní jazykovou verzi.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. Místo toho byste měli použít ordinální porovnávání bez rozlišení velkých a malých písmen, voláním metody, která obsahuje StringComparison parametr a zadáním buď StringComparison.Ordinal nebo StringComparison.OrdinalIgnoreCase jako argumentu.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. Kód, který provádí operace s řetězci závislé na jazykové verzi, může způsobit ohrožení zabezpečení v případě změny aktuální jazykové verze nebo v případě, že jazyková verze v počítači, na kterém je spuštěn kód, se liší od jazykové verze, která se používá k otestování kódu.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. Na rozdíl od, ordinální porovnávání závisí výhradně na binární hodnotě porovnávaných znaků.In contrast, an ordinal comparison depends solely on the binary value of the compared characters.

Platí pro

Viz také