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

정의

문화권 독립(고정)적인 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. 데이터가 deserialize 된 후 현재 사용자의 문화권 규칙에 따라 적절 하 게 나타낼 수 있습니다.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.

적용 대상

추가 정보