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

Definicja

CultureInfo Pobiera obiekt, który jest niezależny od kultury (niezmienna).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

Wartość właściwości

Obiekt, który jest niezależny od kultury (niezmienna).The object that is culture-independent (invariant).

Uwagi

Niezmienna kultura jest niezależna od kultury; jest ona skojarzona z językiem angielskim, ale nie z żadnym krajem/regionem.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. Należy określić niezmienną kulturę według nazwy, używając pustego ciągu ("") w wywołaniu CultureInfo metody tworzenia wystąpienia.You specify the invariant culture by name by using an empty string ("") in the call to a CultureInfo instantiation method. CultureInfo.InvariantCulturePobiera również wystąpienie niezmiennej kultury.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Może być używana w prawie każdej metodzie w System.Globalization przestrzeni nazw, która wymaga kultury.It can be used in almost any method in the System.Globalization namespace that requires a culture. Obiekty zwracane przez właściwości, takie jak CompareInfo, DateTimeFormat, a NumberFormat także odzwierciedlają porównanie ciągów i konwencje formatowania niezmiennej kultury.The objects returned by properties such as CompareInfo, DateTimeFormat, and NumberFormat also reflect the string comparison and formatting conventions of the invariant culture.

W przeciwieństwie do danych wrażliwych na kulturę, które mogą ulec zmianie przez dostosowanie użytkownika lub aktualizacje .NET Framework lub systemu operacyjnego, niezmienne dane kulturowe są stabilne w czasie i w obrębie zainstalowanych kultur i nie mogą być dostosowywane przez użytkowników.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. Sprawia to, że Niezmienna kultura szczególnie przydatna w przypadku operacji, które wymagają wyników niezależnych od kultury, takich jak operacje formatowania i analizowania, które utrzymują sformatowane dane, oraz sortowania i porządkowania operacji, które wymagają, aby dane były wyświetlane w stała kolejność bez względu na kulturę.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.

Operacje na ciągachString Operations

Można użyć niezmiennej kultury dla operacji na ciągach zależnych od kultury, które nie mają wpływ na konwencje bieżącej kultury wątku i są spójne w obrębie kultur.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. Na przykład możesz chcieć, aby posortowane dane były wyświetlane w ustalonej kolejności lub zastosować standardowy zestaw Konwencji wielkości liter do ciągów niezależnie od bieżącej kultury wątku.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. W tym InvariantCulture celu należy przekazać obiekt do metody, która CultureInfo ma parametr, taki jak Compare(String, String, Boolean, CultureInfo) i 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).

Utrwalanie danychPersisting Data

InvariantCulture Właściwość może służyć do utrwalania danych w formacie niezależnym od kultury.The InvariantCulture property can be used to persist data in a culture-independent format. Zapewnia to znany Format, który nie zmienia się i który może służyć do serializacji i deserializacji danych między kulturami.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. Po deserializacji danych można je odpowiednio sformatować na podstawie Konwencji kultury bieżącego użytkownika.After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.

Na przykład jeśli zdecydujesz się InvariantCulture utrwalać dane daty i godziny w postaci ciągu, można przekazać obiekt DateTime.ToString(String, IFormatProvider) do metody lub DateTimeOffset.ToString(IFormatProvider) , aby utworzyć ciąg, DateTime.Parse(String, IFormatProvider) i można przekazać InvariantCulture obiekt do lub DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) Metoda konwersji ciągu z powrotem na wartość daty i godziny.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. Ta technika zapewnia, że bazowe wartości daty i godziny nie zmieniają się, gdy dane są odczytywane lub zapisywane przez użytkowników z różnych kultur.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.

W poniższym przykładzie zastosowano niezmienną kulturę, aby DateTime zachować wartość jako ciąg.The following example uses the invariant culture to persist a DateTime value as a string. Następnie analizuje ciąg i wyświetla jego wartość przy użyciu Konwencji formatowania dla kultur francuski (Francja) i niemieckie (Niemcy).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

Decyzje dotyczące bezpieczeństwaSecurity Decisions

W przypadku podejmowania decyzji o zabezpieczeniach (np. czy zezwolić na dostęp do zasobu systemowego) na podstawie wyniku porównania ciągów lub zmiany wielkości liter nie należy używać kultury niezmiennej.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. Zamiast tego należy wykonać porównywanie porządkowe z rozróżnianiem wielkości liter, wywołując metodę, która zawiera StringComparison parametr i dostarczając StringComparison.OrdinalIgnoreCase albo StringComparison.Ordinal jako argument.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. Kod wykonujący operacje na ciągach zależnych od kultury może spowodować luki w zabezpieczeniach, jeśli bieżąca kultura została zmieniona lub gdy kultura na komputerze, na którym działa kod, różni się od kultury, która jest używana do testowania kodu.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. Natomiast porównanie porządkowe zależy wyłącznie od wartości binarnej porównywanych znaków.In contrast, an ordinal comparison depends solely on the binary value of the compared characters.

Dotyczy

Zobacz też