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, DateTimeFormatNumberFormat와 같은 속성에 의해 반환 되는 개체는 또한 고정 문화권의 문자열 비교 및 서식 지정 규칙을 반영 합니다.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. 이렇게 하려면 Compare(String, String, Boolean, CultureInfo)ToUpper(CultureInfo)와 같이 CultureInfo 매개 변수가 있는 메서드에 InvariantCulture 개체를 전달 합니다.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. 이는 변경 되지 않으며 문화권 간에 데이터를 serialize 및 deserialize 하는 데 사용할 수 있는 알려진 형식을 제공 합니다.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.

적용 대상

추가 정보