CultureInfo.InvariantCulture Свойство

Определение

Возвращает объект CultureInfo, не зависящий от языка и региональных параметров (инвариантный).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

Значение свойства

Объект, не зависящий от языка и региональных параметров (инвариантный).The object that is culture-independent (invariant).

Комментарии

Инвариантный язык и региональные параметры не чувствительны к языку и региональным параметрам; Он связан с английским языком, но не с какой-либо страной или регионом.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. Инвариантные язык и региональные параметры задаются с помощью пустой строки ("") в вызове метода создания экземпляра CultureInfo.You specify the invariant culture by name by using an empty string ("") in the call to a CultureInfo instantiation method. CultureInfo.InvariantCulture также извлекает экземпляр инвариантного языка и региональных параметров.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Его можно использовать практически в любом методе в пространстве имен System.Globalization, для которого требуется язык и региональные параметры.It can be used in almost any method in the System.Globalization namespace that requires a culture. Объекты, возвращаемые свойствами, такими как CompareInfo, DateTimeFormatи NumberFormat, также соответствуют соглашениям сравнения строк и форматирования инвариантного языка и региональных параметров.The objects returned by properties such as CompareInfo, DateTimeFormat, and NumberFormat also reflect the string comparison and formatting conventions of the invariant culture.

В отличие от данных, зависящих от языка и региональных параметров, которые могут изменяться пользовательской настройкой или обновлениями .NET Framework или операционной системы, инвариантные данные языка и региональных параметров стабильны со временем и между установленными культурами и не могут быть настроены пользователями.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. Это делает инвариантные язык и региональные параметры особенно полезными для операций, которым требуются независимые от языка и региональных параметров результаты, такие как операции форматирования и анализа, сохраняющие форматированные данные, или операции сортировки и упорядочивания, требующие отображения данных в фиксированный порядок, независимо от языка и региональных параметров.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.

Операции со строкамиString Operations

Инвариантные язык и региональные параметры можно использовать для строковых операций с учетом языка и региональных параметров, которые не затрагиваются соглашениями о текущем языке и являются согласованными между языками и региональными параметрами.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. Например, может потребоваться, чтобы отсортированные данные отображались в фиксированном порядке или применялись стандартные наборы соглашений о регистре к строкам независимо от языка и региональных параметров текущего потока.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. Для этого необходимо передать объект InvariantCulture в метод, имеющий параметр CultureInfo, например Compare(String, String, Boolean, CultureInfo) и 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).

Сохранение данныхPersisting Data

Свойство InvariantCulture можно использовать для сохранения данных в формате, независимом от языка и региональных параметров.The InvariantCulture property can be used to persist data in a culture-independent format. Это обеспечивает известный формат, который не изменяется и может использоваться для сериализации и десериализации данных в разных культурах.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. После десериализации данные можно отформатировать в соответствии с региональными соглашениями текущего пользователя.After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.

Например, если вы решили сохранить данные даты и времени в виде строки, можно передать объект InvariantCulture в метод DateTime.ToString(String, IFormatProvider) или DateTimeOffset.ToString(IFormatProvider), чтобы создать строку, а также передать объект InvariantCulture в метод DateTime.Parse(String, IFormatProvider) или DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) для преобразования строки обратно в значение даты и времени.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. Этот метод гарантирует, что базовые значения даты и времени не изменяются, когда данные считываются или записываются пользователями из разных языков и региональных параметров.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.

В следующем примере инвариантный язык и региональные параметры используются для сохранения DateTime значения в виде строки.The following example uses the invariant culture to persist a DateTime value as a string. Затем он анализирует строку и отображает ее значение с помощью соглашений о форматировании для французского (Франция) и немецкого (Германия) языков.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

Решения по безопасностиSecurity Decisions

Если вы принимаете решение о безопасности (например, разрешает ли доступ к системному ресурсу) на основе сравнения строк или изменения регистра, не следует использовать инвариантный язык и региональные параметры.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. Вместо этого необходимо выполнить порядковое сравнение с учетом регистра или без учета регистра, вызвав метод, который включает параметр StringComparison и указать в качестве аргумента StringComparison.Ordinal или StringComparison.OrdinalIgnoreCase.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 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. Порядковое сравнение, напротив, зависит только от двоичного значения сравниваемых символов.In contrast, an ordinal comparison depends solely on the binary value of the compared characters.

Применяется к

Дополнительно