CultureInfo.InvariantCulture Eigenschaft

Definition

Ruft das kulturunabhängige (invariante) CultureInfo-Objekt ab.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

Eigenschaftswert

Das Objekt, das die kulturunabhängige (invariante) ist.The object that is culture-independent (invariant).

Hinweise

Die invariante Kultur ist Kultur unabhängig. Sie ist mit der englischen Sprache verknüpft, aber nicht mit einem Land bzw. einer Region.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. Sie geben die invariante Kultur nach Namen an, indem Sie eine leere Zeichenfolge ("") im Aufrufe einer CultureInfo Instanziierung-Methode verwenden.You specify the invariant culture by name by using an empty string ("") in the call to a CultureInfo instantiation method. CultureInfo.InvariantCulture ruft auch eine Instanz der invarianten Kultur ab.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Sie kann in nahezu jeder Methode im System.Globalization-Namespace verwendet werden, der eine Kultur erfordert.It can be used in almost any method in the System.Globalization namespace that requires a culture. Die von Eigenschaften wie CompareInfo, DateTimeFormatund NumberFormat zurückgegebenen Objekte spiegeln auch den Zeichen folgen Vergleich und die Formatierungs Konventionen der invarianten Kultur wider.The objects returned by properties such as CompareInfo, DateTimeFormat, and NumberFormat also reflect the string comparison and formatting conventions of the invariant culture.

Im Unterschied zu Kultur abhängigen Daten, die von der Benutzeranpassung oder durch Aktualisierungen der .NET Framework oder des Betriebssystems geändert werden können, sind invariante Kultur Daten im Zeitverlauf und in den installierten Kulturen stabil und können nicht von Benutzern angepasst werden.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. Dadurch ist die invariante Kultur besonders nützlich bei Vorgängen, die Kultur unabhängige Ergebnisse erfordern, wie z. b. Formatierungs-und Verarbeitungsvorgänge, bei denen formatierte Daten persistent gespeichert werden, oder Sortier-und Sortiervorgänge, die erfordern, dass Daten in einem die Reihenfolge ist unabhängig von der Kultur korrigiert.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.

Zeichen folgen VorgängeString Operations

Sie können die invariante Kultur für Kultur abhängige Zeichen folgen Operationen verwenden, die nicht von den Konventionen der aktuellen Thread Kultur betroffen sind und die zwischen Kulturen einheitlich sind.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. Beispielsweise möchten Sie, dass sortierte Daten in einer festgelegten Reihenfolge angezeigt werden oder einen Standardsatz von Regeln für die Groß-/Kleinschreibung unabhängig von der aktuellen Thread Kultur auf Zeichen folgen anwenden.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. Zu diesem Zweck übergeben Sie das InvariantCulture-Objekt an eine Methode, die über einen CultureInfo Parameter verfügt, z. b. Compare(String, String, Boolean, CultureInfo) und 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).

Beibehalten von DatenPersisting Data

Die InvariantCulture-Eigenschaft kann verwendet werden, um Daten in einem Kultur unabhängigen Format beizubehalten.The InvariantCulture property can be used to persist data in a culture-independent format. Dadurch wird ein bekanntes Format bereitgestellt, das sich nicht ändert und das zum Serialisieren und Deserialisieren von Daten zwischen Kulturen verwendet werden kann.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. Nachdem die Daten deserialisiert wurden, können Sie entsprechend den kulturellen Konventionen des aktuellen Benutzers entsprechend formatiert werden.After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.

Wenn Sie z. b. Datums-und Uhrzeit Daten im Zeichen folgen Format beibehalten möchten, können Sie das InvariantCulture-Objekt an die DateTime.ToString(String, IFormatProvider)-oder DateTimeOffset.ToString(IFormatProvider)-Methode übergeben, um die Zeichenfolge zu erstellen, und Sie können das InvariantCulture Objekt an die DateTime.Parse(String, IFormatProvider)-oder DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles)-Methode übergeben. , wenn die Zeichenfolge wieder in einen Datums-und Uhrzeitwert konvertiert werden soll.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. Mit dieser Methode wird sichergestellt, dass die zugrunde liegenden Datums-und Uhrzeitwerte nicht geändert werden, wenn die Daten von Benutzern aus unterschiedlichen Kulturen gelesen oder geschrieben werden.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.

Im folgenden Beispiel wird die invariante Kultur verwendet, um einen DateTime Wert als Zeichenfolge beizubehalten.The following example uses the invariant culture to persist a DateTime value as a string. Anschließend wird die Zeichenfolge analysiert und der zugehörige Wert mithilfe der Formatierungs Konventionen der Kulturen Französisch (Frankreich) und Deutsch (Deutschland) angezeigt.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

SicherheitsentscheidungenSecurity Decisions

Wenn Sie eine Sicherheits Entscheidung treffen (z. b., ob der Zugriff auf eine System Ressource zulässig ist), basierend auf dem Ergebnis eines Zeichen folgen Vergleichs oder einer Fall Änderung, sollten Sie die invariante Kultur nicht verwenden.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. Stattdessen sollten Sie einen Ordinalvergleich ohne Beachtung der Groß-/Kleinschreibung durchführen, indem Sie eine Methode aufrufen, die einen StringComparison-Parameter enthält und entweder StringComparison.Ordinal oder StringComparison.OrdinalIgnoreCase als Argument bereitstellt.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. Code, der Kultur abhängige Zeichen folgen Operationen ausführt, kann zu Sicherheitsrisiken führen, wenn die aktuelle Kultur geändert wird oder wenn sich die Kultur des Computers, auf dem der Code ausgeführt wird, von der Kultur unterscheidet, die zum Testen des Codes verwendet wird.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. Im Gegensatz dazu ist ein Ordinalvergleich nur von dem binären Wert der verglichenen Zeichen abhängig.In contrast, an ordinal comparison depends solely on the binary value of the compared characters.

Gilt für:

Siehe auch