CultureInfo 클래스

정의

특정 문화권(비관리 코드 개발의 경우 로캘이라고 함)에 대한 정보를 제공합니다.Provides information about a specific culture (called a locale for unmanaged code development). 이 정보에는 문화권 이름, 쓰기 시스템, 사용된 달력, 문자열의 정렬 순서, 날짜 및 숫자 형식이 포함되어 있습니다.The information includes the names for the culture, the writing system, the calendar used, the sort order of strings, and formatting for dates and numbers.

public ref class CultureInfo : ICloneable, IFormatProvider
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class CultureInfo : ICloneable, IFormatProvider
type CultureInfo = class
    interface ICloneable
    interface IFormatProvider
Public Class CultureInfo
Implements ICloneable, IFormatProvider
상속
CultureInfo
특성
구현

예제

다음 예제에서는 국제 정렬을 사용 하는 스페인어 (스페인)의 CultureInfo 개체를 만들고 기존 정렬을 사용 하는 다른 CultureInfo 개체를 만드는 방법을 보여 줍니다.The following example shows how to create a CultureInfo object for Spanish (Spain) with the international sort and another CultureInfo object with the traditional sort.

using namespace System;
using namespace System::Collections;
using namespace System::Globalization;
int main()
{
   
   // Creates and initializes the CultureInfo which uses the international sort.
   CultureInfo^ myCIintl = gcnew CultureInfo( "es-ES",false );
   
   // Creates and initializes the CultureInfo which uses the traditional sort.
   CultureInfo^ myCItrad = gcnew CultureInfo( 0x040A,false );
   
   // Displays the properties of each culture.
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL" );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "CompareInfo", myCIintl->CompareInfo, myCItrad->CompareInfo );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "DisplayName", myCIintl->DisplayName, myCItrad->DisplayName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "EnglishName", myCIintl->EnglishName, myCItrad->EnglishName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "IsNeutralCulture", myCIintl->IsNeutralCulture, myCItrad->IsNeutralCulture );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "IsReadOnly", myCIintl->IsReadOnly, myCItrad->IsReadOnly );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "LCID", myCIintl->LCID, myCItrad->LCID );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "Name", myCIintl->Name, myCItrad->Name );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "NativeName", myCIintl->NativeName, myCItrad->NativeName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "Parent", myCIintl->Parent, myCItrad->Parent );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "TextInfo", myCIintl->TextInfo, myCItrad->TextInfo );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "ThreeLetterISOLanguageName", myCIintl->ThreeLetterISOLanguageName, myCItrad->ThreeLetterISOLanguageName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl->ThreeLetterWindowsLanguageName, myCItrad->ThreeLetterWindowsLanguageName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "TwoLetterISOLanguageName", myCIintl->TwoLetterISOLanguageName, myCItrad->TwoLetterISOLanguageName );
   Console::WriteLine();
   
   // Compare two strings using myCIintl -> 
   Console::WriteLine( "Comparing \"llegar\" and \"lugar\"" );
   Console::WriteLine( "   With myCIintl -> CompareInfo -> Compare: {0}", myCIintl->CompareInfo->Compare( "llegar", "lugar" ) );
   Console::WriteLine( "   With myCItrad -> CompareInfo -> Compare: {0}", myCItrad->CompareInfo->Compare( "llegar", "lugar" ) );
}

/*
This code produces the following output.

PROPERTY                       INTERNATIONAL                                  TRADITIONAL              
CompareInfo                    CompareInfo - es-ES                            CompareInfo - es-ES_tradnl
DisplayName                    Spanish (Spain)                                Spanish (Spain)          
EnglishName                    Spanish (Spain, International Sort)            Spanish (Spain, Traditional Sort)
IsNeutralCulture               False                                          False                    
IsReadOnly                     False                                          False                    
LCID                           3082                                           1034                     
Name                           es-ES                                          es-ES                    
NativeName                     Español (España, alfabetización internacional) Español (España, alfabetización tradicional)
Parent                         es                                             es                       
TextInfo                       TextInfo - es-ES                               TextInfo - es-ES_tradnl  
ThreeLetterISOLanguageName     spa                                            spa                      
ThreeLetterWindowsLanguageName ESN                                            ESP                      
TwoLetterISOLanguageName       es                                             es                       

Comparing "llegar" and "lugar"
   With myCIintl -> CompareInfo -> Compare: -1
   With myCItrad -> CompareInfo -> Compare: 1

*/
using System;
using System.Collections;
using System.Globalization;

public class SamplesCultureInfo
{

   public static void Main()
   {

      // Creates and initializes the CultureInfo which uses the international sort.
      CultureInfo myCIintl = new CultureInfo("es-ES", false);

      // Creates and initializes the CultureInfo which uses the traditional sort.
      CultureInfo myCItrad = new CultureInfo(0x040A, false);

      // Displays the properties of each culture.
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL");
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "CompareInfo", myCIintl.CompareInfo, myCItrad.CompareInfo);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "DisplayName", myCIintl.DisplayName, myCItrad.DisplayName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "EnglishName", myCIintl.EnglishName, myCItrad.EnglishName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsNeutralCulture", myCIintl.IsNeutralCulture, myCItrad.IsNeutralCulture);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsReadOnly", myCIintl.IsReadOnly, myCItrad.IsReadOnly);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "LCID", myCIintl.LCID, myCItrad.LCID);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Name", myCIintl.Name, myCItrad.Name);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "NativeName", myCIintl.NativeName, myCItrad.NativeName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Parent", myCIintl.Parent, myCItrad.Parent);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TextInfo", myCIintl.TextInfo, myCItrad.TextInfo);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterISOLanguageName", myCIintl.ThreeLetterISOLanguageName, myCItrad.ThreeLetterISOLanguageName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl.ThreeLetterWindowsLanguageName, myCItrad.ThreeLetterWindowsLanguageName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TwoLetterISOLanguageName", myCIintl.TwoLetterISOLanguageName, myCItrad.TwoLetterISOLanguageName);
      Console.WriteLine();

      // Compare two strings using myCIintl.
      Console.WriteLine("Comparing \"llegar\" and \"lugar\"");
      Console.WriteLine("   With myCIintl.CompareInfo.Compare: {0}", myCIintl.CompareInfo.Compare("llegar", "lugar"));
      Console.WriteLine("   With myCItrad.CompareInfo.Compare: {0}", myCItrad.CompareInfo.Compare("llegar", "lugar"));

   }

}

/*
This code produces the following output.

PROPERTY                       INTERNATIONAL                                  TRADITIONAL              
CompareInfo                    CompareInfo - es-ES                            CompareInfo - es-ES_tradnl
DisplayName                    Spanish (Spain)                                Spanish (Spain)          
EnglishName                    Spanish (Spain, International Sort)            Spanish (Spain, Traditional Sort)
IsNeutralCulture               False                                          False                    
IsReadOnly                     False                                          False                    
LCID                           3082                                           1034                     
Name                           es-ES                                          es-ES                    
NativeName                     Español (España, alfabetización internacional) Español (España, alfabetización tradicional)
Parent                         es                                             es                       
TextInfo                       TextInfo - es-ES                               TextInfo - es-ES_tradnl  
ThreeLetterISOLanguageName     spa                                            spa                      
ThreeLetterWindowsLanguageName ESN                                            ESP                      
TwoLetterISOLanguageName       es                                             es                       

Comparing "llegar" and "lugar"
   With myCIintl.CompareInfo.Compare: -1
   With myCItrad.CompareInfo.Compare: 1

*/
Imports System.Collections
Imports System.Globalization

Module Module1

    Public Sub Main()

        ' Creates and initializes the CultureInfo which uses the international sort.
        Dim myCIintl As New CultureInfo("es-ES", False)

        ' Creates and initializes the CultureInfo which uses the traditional sort.
        Dim myCItrad As New CultureInfo(&H40A, False)

        ' Displays the properties of each culture.
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL")
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "CompareInfo", myCIintl.CompareInfo, myCItrad.CompareInfo)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "DisplayName", myCIintl.DisplayName, myCItrad.DisplayName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "EnglishName", myCIintl.EnglishName, myCItrad.EnglishName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsNeutralCulture", myCIintl.IsNeutralCulture, myCItrad.IsNeutralCulture)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsReadOnly", myCIintl.IsReadOnly, myCItrad.IsReadOnly)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "LCID", myCIintl.LCID, myCItrad.LCID)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Name", myCIintl.Name, myCItrad.Name)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "NativeName", myCIintl.NativeName, myCItrad.NativeName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Parent", myCIintl.Parent, myCItrad.Parent)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TextInfo", myCIintl.TextInfo, myCItrad.TextInfo)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterISOLanguageName", myCIintl.ThreeLetterISOLanguageName, myCItrad.ThreeLetterISOLanguageName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl.ThreeLetterWindowsLanguageName, myCItrad.ThreeLetterWindowsLanguageName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TwoLetterISOLanguageName", myCIintl.TwoLetterISOLanguageName, myCItrad.TwoLetterISOLanguageName)
        Console.WriteLine()

        ' Compare two strings using myCIintl.
        Console.WriteLine("Comparing ""llegar"" and ""lugar""")
        Console.WriteLine("   With myCIintl.CompareInfo.Compare: {0}", myCIintl.CompareInfo.Compare("llegar", "lugar"))
        Console.WriteLine("   With myCItrad.CompareInfo.Compare: {0}", myCItrad.CompareInfo.Compare("llegar", "lugar"))

    End Sub



'This code produces the following output.
'
'PROPERTY                       INTERNATIONAL                                  TRADITIONAL              
'CompareInfo                    CompareInfo - es-ES                            CompareInfo - es-ES_tradnl
'DisplayName                    Spanish (Spain)                                Spanish (Spain)          
'EnglishName                    Spanish (Spain, International Sort)            Spanish (Spain, Traditional Sort)
'IsNeutralCulture               False                                          False                    
'IsReadOnly                     False                                          False                    
'LCID                           3082                                           1034                     
'Name                           es-ES                                          es-ES                    
'NativeName                     Español (España, alfabetización internacional) Español (España, alfabetización tradicional)
'Parent                         es                                             es                       
'TextInfo                       TextInfo - es-ES                               TextInfo - es-ES_tradnl  
'ThreeLetterISOLanguageName     spa                                            spa                      
'ThreeLetterWindowsLanguageName ESN                                            ESP                      
'TwoLetterISOLanguageName       es                                             es                       
'
'Comparing "llegar" and "lugar"
'   With myCIintl.CompareInfo.Compare: -1
'   With myCItrad.CompareInfo.Compare: 1

End Module

설명

CultureInfo 클래스는 언어, 하위 언어, 국가/지역, 달력 및 특정 문화권과 관련 된 규칙과 같은 문화권별 정보를 제공 합니다.The CultureInfo class provides culture-specific information, such as the language, sublanguage, country/region, calendar, and conventions associated with a particular culture. 또한이 클래스는 DateTimeFormatInfo, NumberFormatInfo, CompareInfoTextInfo 개체의 문화권별 인스턴스에 대 한 액세스를 제공 합니다.This class also provides access to culture-specific instances of the DateTimeFormatInfo, NumberFormatInfo, CompareInfo, and TextInfo objects. 이러한 개체에는 대/소문자 구분, 날짜 및 숫자 서식 지정 및 문자열 비교와 같은 문화권 관련 작업에 필요한 정보가 포함 됩니다.These objects contain the information required for culture-specific operations, such as casing, formatting dates and numbers, and comparing strings. CultureInfo 클래스는 String, DateTime, DateTimeOffset, 숫자 형식 등의 문화권별 데이터를 형식 지정, 구문 분석 또는 조작 하는 클래스에 의해 직접 또는 간접적으로 사용 됩니다.The CultureInfo class is used either directly or indirectly by classes that format, parse, or manipulate culture-specific data, such as String, DateTime, DateTimeOffset, and the numeric types.

이 섹션에서는 다음 작업을 수행합니다.In this section:

문화권 이름 및 식별자 Culture names and identifiers
고정, 중립 및 특정 문화권 Invariant, neutral, and specific cultures
사용자 지정 문화권 Custom cultures
동적 문화권 데이터 Dynamic culture data
CultureInfo 및 culture 데이터 현재 문화권 및 현재 UI 문화권 CultureInfo and cultural data The current culture and current UI culture
모든 문화권 가져오기Getting all cultures
문화권 및 스레드 Culture and threads
문화권 및 애플리케이션 도메인 Culture and application domains
문화권 및 작업 기반 비동기 작업 Culture and task-based asynchronous operations
CultureInfo 개체 serialization CultureInfo object serialization
제어판 재정의 Control Panel overrides
대체 정렬 순서 Alternate sort orders
Culture 및 Windows 앱Culture and Windows apps

문화권 이름 및 식별자Culture names and identifiers

CultureInfo 클래스는 RFC 4646을 기반으로 각 문화권의 고유 이름을 지정 합니다.The CultureInfo class specifies a unique name for each culture, based on RFC 4646. 이름에는 언어와 관련 된 ISO 639 두 문자의 소문자 문화권 코드를 한 국가 또는 지역에 연결 된 ISO 3166 두 문자의 대문자 하위 문화권 코드를 조합입니다.The name is a combination of an ISO 639 two-letter lowercase culture code associated with a language and an ISO 3166 two-letter uppercase subculture code associated with a country or region. 또한 이상 버전을 .NET Framework 4.NET Framework 4 대상으로 하 고 Windows 10 이상에서 실행 되는 앱의 경우 유효한 BCP-47 언어 태그에 해당 하는 문화권 이름이 지원 됩니다.In addition, for apps that target .NET Framework 4.NET Framework 4 or later and are running under Windows 10 or later, culture names that correspond to valid BCP-47 language tags are supported.

참고

문화권 이름이 CreateSpecificCulture 또는 CultureInfo같은 클래스 생성자 또는 메서드에 전달 되는 경우 해당 사례는 중요 하지 않습니다.When a culture name is passed to a class constructor or a method such as CreateSpecificCulture or CultureInfo, its case is not significant.

RFC 4646을 기반으로 하는 문화권 이름의 형식은 languagecode2>-country/regioncode2입니다. 여기서 languagecode2 는 두 문자로 된 언어 코드이 고 country/regioncode2 는 두 문자로 된 하위 문화권 코드입니다.The format for the culture name based on RFC 4646 is languagecode2>-country/regioncode2, where languagecode2 is the two-letter language code and country/regioncode2 is the two-letter subculture code. 예를 들면 일본어 (일본)의 경우 ja-jp, 영어 (미국)의 경우 en-us입니다.Examples include ja-JP for Japanese (Japan) and en-US for English (United States). 두 문자로 된 언어 코드를 사용할 수 없는 경우 ISO 639-2에서 파생 된 세 문자로 된 코드를 사용 합니다.In cases where a two-letter language code is not available, a three-letter code derived from ISO 639-2 is used.

일부 문화권 이름에는 ISO 15924 스크립트도 지정 됩니다.Note that some culture names also specify an ISO 15924 script. 예를 들어 Cyrl는 키릴 자모 스크립트를 지정 하 고 Latn은 라틴어 스크립트를 지정 합니다.For example, Cyrl specifies the Cyrillic script and Latn specifies the Latin script. 스크립트가 포함 된 문화권 이름은 languagecode2-scripttag-country/regioncode2패턴을 사용 합니다.A culture name that includes a script uses the pattern languagecode2-scripttag-country/regioncode2. 이러한 문화권 이름 형식의 예는 우즈베크어 (키릴 자모, 우즈베키스탄)의 uz-Cyrl-UZ입니다.An example of this type of culture name is uz-Cyrl-UZ for Uzbek (Cyrillic, Uzbekistan). Windows Vista 이전의 Windows 운영 체제에서 스크립트가 포함 된 문화권 이름은 languagecode2-country/regioncode2-scripttag를 사용 합니다 (예: Uz-uz-Cyrl (키릴 자모, 우즈베키스탄)). ).On Windows operating systems before Windows Vista, a culture name that includes a script uses the pattern languagecode2-country/regioncode2-scripttag, for example, uz-UZ-Cyrl for Uzbek (Cyrillic, Uzbekistan).

중립 문화권은 2 자 소문자 언어 코드로만 지정 됩니다.A neutral culture is specified by only the two-letter lowercase language code. 예를 들어 fr은 프랑스어의 중립 문화권을 지정 하 고 de는 독일어의 중립 문화권을 지정 합니다.For example, fr specifies the neutral culture for French, and de specifies the neutral culture for German.

참고

이 규칙과 일치 하지 않는 두 가지 문화권 이름이 있습니다.There are two culture names that contradict this rule. Zh-cn-Zh-hant 이라는 중국어 (간체), 중국어 (간체) 문화권은 중립 문화권입니다.The cultures Chinese (Simplified), named zh-Hans, and Chinese (Traditional), named zh-Hant, are neutral cultures. 문화권 이름은 현재 표준을 나타내므로 이전 이름 zh-cn 및 zh-cn-CHT를 사용 해야 하는 이유가 없으면 사용 해야 합니다.The culture names represent the current standard and should be used unless you have a reason for using the older names zh-CHS and zh-CHT.

문화권 식별자는 표준 국제 숫자 약어 이며 설치 된 문화권 중 하나를 고유 하 게 식별 하는 데 필요한 구성 요소를 포함 합니다.A culture identifier is a standard international numeric abbreviation and has the components necessary to uniquely identify one of the installed cultures. 애플리케이션은 미리 정의 된 문화권 식별자를 사용 하거나 사용자 지정 식별자를 정의할 수 있습니다.Your application can use predefined culture identifiers or define custom identifiers.

미리 정의 된 특정 문화권 이름 및 식별자는이 클래스 및 System.Globalization 네임 스페이스의 다른 클래스에서 사용 됩니다.Certain predefined culture names and identifiers are used by this and other classes in the System.Globalization namespace. Windows 시스템에 대 한 자세한 culture 정보는 windows에서 지 원하는 언어/지역 이름 목록의 언어 태그 열을 참조 하세요.For detailed culture information for Windows systems, see the Language tag column in the list of language/region names supported by Windows. 문화권 이름은 BCP 47에 정의된 표준을 따릅니다.Culture names follow the standard defined by BCP 47.

문화권 이름 및 식별자는 특정 컴퓨터에서 찾을 수 있는 문화권의 하위 집합만을 나타낸다는 것을 명심 하세요.Remember that the culture names and identifiers represent only a subset of cultures that can be found on a particular computer. Windows 버전 또는 서비스 팩은 사용 가능한 문화권을 변경할 수 있습니다.Windows versions or service packs can change the available cultures. 애플리케이션 추가 사용 하 여 사용자 지정 culture는 CultureAndRegionInfoBuilder 클래스입니다.Applications add custom cultures using the CultureAndRegionInfoBuilder class. 사용자는 Microsoft Locale Builder 도구를 사용 하 여 고유한 사용자 지정 문화권을 추가 합니다.Users add their own custom cultures using the Microsoft Locale Builder tool. Microsoft Locale Builder는 CultureAndRegionInfoBuilder 클래스를 사용 하 여 관리 코드로 작성 됩니다.Microsoft Locale Builder is written in managed code using the CultureAndRegionInfoBuilder class.

다음과 같은 클래스 멤버와 관련 된 이름과 같이 여러 개의 고유 이름이 문화권과 밀접 하 게 연결 되어 있습니다.Several distinct names are closely associated with a culture, notably the names associated with the following class members:

고정, 중립 및 특정 문화권Invariant, neutral, and specific cultures

일반적으로 문화권은 고정 문화권, 중립 문화권 및 특정 문화권의 세 가지 집합으로 그룹화 됩니다.The cultures are generally grouped into three sets: invariant cultures, neutral cultures, and specific cultures.

고정 문화권은 문화권을 구분 하지 않습니다.An invariant culture is culture-insensitive. 빈 문자열을 사용 하 여 이름 고정 문화권을 지정 하는 애플리케이션 ("") 또는 해당 id에서 합니다.Your application specifies the invariant culture by name using an empty string ("") or by its identifier. InvariantCulture 고정 문화권의 인스턴스를 정의 합니다.InvariantCulture defines an instance of the invariant culture. 영어와 연결 되어 있지만 국가/지역과는 관련이 없습니다.It is associated with the English language but not with any country/region. 문화권이 필요한 Globalization 네임 스페이스의 거의 모든 메서드에서 사용 됩니다.It is used in almost any method in the Globalization namespace that requires a culture.

중립 문화권은 언어와 연결 되어 있지만 국가/지역이 아닌 문화권입니다.A neutral culture is a culture that is associated with a language but not with a country/region. 특정 문화권은 언어 및 국가/지역과 연결 된 문화권입니다.A specific culture is a culture that is associated with a language and a country/region. 예를 들어 fr은 프랑스어 문화권의 중립 이름이 고 fr-fr은 특정 프랑스어 (프랑스) 문화권의 이름입니다.For example, fr is the neutral name for the French culture, and fr-FR is the name of the specific French (France) culture. 중국어 (간체) 및 중국어 (번체)도 중립 문화권으로 간주 됩니다.Note that Chinese (Simplified) and Chinese (Traditional) are also considered neutral cultures.

중립 문화권에 대 한 CompareInfo 클래스의 인스턴스를 만드는 것은 해당 클래스에 포함 된 데이터가 임의적 이므로 권장 되지 않습니다.Creating an instance of a CompareInfo class for a neutral culture is not recommended because the data it contains is arbitrary. 데이터를 표시 하 고 정렬 하려면 언어와 지역을 모두 지정 합니다.To display and sort data, specify both the language and region. 또한 중립 문화권에 대해 만들어진 CompareInfo 개체의 Name 속성은 국가만 반환 하 고 지역은 포함 하지 않습니다.Additionally, the Name property of a CompareInfo object created for a neutral culture returns only the country and does not include the region.

정의 된 문화권에는 특정 문화권의 부모가 중립 문화권이 고 중립 문화권의 부모가 고정 문화권 인 계층이 있습니다.The defined cultures have a hierarchy in which the parent of a specific culture is a neutral culture and the parent of a neutral culture is the invariant culture. Parent 속성은 특정 문화권과 연결 된 중립 문화권을 포함 합니다.The Parent property contains the neutral culture associated with a specific culture. 사용자 지정 문화권은이 패턴을 준수 하 여 Parent 속성을 정의 해야 합니다.Custom cultures should define the Parent property in conformance with this pattern.

특정 문화권에 대 한 리소스를 운영 체제에서 사용할 수 없는 경우 연결 된 중립 문화권에 대 한 리소스가 사용 됩니다.If the resources for a specific culture are not available in the operating system, the resources for the associated neutral culture are used. 중립 문화권에 대 한 리소스를 사용할 수 없는 경우에 주 어셈블리에 포함 된 리소스 사용 됩니다.If the resources for the neutral culture are not available, the resources embedded in the main assembly are used. 리소스 대체 프로세스에 대 한 자세한 내용은 리소스 패키징 및 배포를 참조 하세요.For more information on the resource fallback process, see Packaging and Deploying Resources.

Windows API의 로캘 목록은 .NET Framework 지원 되는 문화권 목록과 약간 다릅니다.The list of locales in the Windows API is slightly different from the list of cultures supported by the .NET Framework. Windows와의 상호 운용성이 필요한 경우 예를 들어 p/invoke 메커니즘을 통해 애플리케이션 사용 해야 정의 된 특정 문화권 운영 체제에 대 한 합니다.If interoperability with Windows is required, for example, through the p/invoke mechanism, the application should use a specific culture that is defined for the operating system. 특정 문화권을 사용 하면 LCID와 동일 하 게 표시 되는 로캘 식별자로 식별 되는 해당 Windows 로캘과 일관성을 유지할 수 있습니다.Use of the specific culture ensures consistency with the equivalent Windows locale, which is identified with a locale identifier that is the same as LCID.

DateTimeFormatInfo 또는 NumberFormatInfo는 고정 문화권 또는 중립 문화권이 아닌 특정 문화권에 대해서만 만들 수 있습니다.A DateTimeFormatInfo or a NumberFormatInfo can be created only for the invariant culture or for specific cultures, not for neutral cultures.

DateTimeFormatInfo.Calendar TaiwanCalendar 이지만 Thread.CurrentCulture을 zh-cn으로 설정 하지 않은 경우 DateTimeFormatInfo.NativeCalendarName, DateTimeFormatInfo.GetEraNameDateTimeFormatInfo.GetAbbreviatedEraName 빈 문자열 ("")을 반환 합니다.If DateTimeFormatInfo.Calendar is the TaiwanCalendar but the Thread.CurrentCulture is not set to zh-TW, then DateTimeFormatInfo.NativeCalendarName, DateTimeFormatInfo.GetEraName, and DateTimeFormatInfo.GetAbbreviatedEraName return an empty string ("").

사용자 지정 문화권Custom cultures

Windows 운영 체제 및 .NET Framework에서 지 원하는 미리 정의 된 문화권 외에도 .NET Framework는 세 가지 유형의 사용자 지정 문화권을 지원 합니다.In addition to the predefined cultures supported by the Windows operating system and the .NET Framework, the .NET Framework supports three types of custom cultures:

  • Windows 또는 .NET Framework에서 사용할 수 있는 문화권을 보완 하는 새 문화권입니다.New cultures that supplement the cultures available in Windows or the .NET Framework. 예를 들어, 애플리케이션 설치할 수는 CultureInfo 나타냅니다는 FJ-FJ (또는 Fijan (피지)) 시스템에서 문화권 개체입니다.For example, an application could install a CultureInfo object that represents the fj-FJ (or Fijan (Fiji)) culture on a system.

  • 속성이 Windows 및 .NET Framework에서 지 원하는 표준 문화권의 속성과 다른 대체 문화권입니다.Replacement cultures whose properties are different from the properties of the standard cultures supported by Windows and the .NET Framework.

  • 사용자 재정의를 사용 하는 표준 문화권Standard cultures with user overrides. 사용자가 사용할 수는 국가 및 언어 애플리케이션 제어판 기존 문화권의 속성 값을 사용자 지정할 수 있습니다.The user can use the Region and Language application in Control Panel to customize an existing culture's property values.

참고

CultureAndRegionInfoBuilder 클래스를 사용 하 여 기존 문화권을 보완 하거나 대체 하는 사용자 지정 문화권을 정의, 저장 및 등록할 수 있습니다.You can use the CultureAndRegionInfoBuilder class to define, save, and register custom cultures that either supplement or replace existing cultures. CultureAndRegionInfoBuilder.Save 메서드는 대상 시스템에 사용자 지정 문화권을 설치 하는 데 사용할 수 있는 로캘 LDML (데이터 태그 언어) 파일을 만듭니다.The CultureAndRegionInfoBuilder.Save method creates a Locale Data Markup Language (LDML) file that can be used to install a custom culture on target systems. CultureAndRegionInfoBuilder 클래스를 사용 하 여 새 문화권 또는 대체 문화권을 만드는 방법에 대 한 단계별 정보는 CultureAndRegionInfoBuilder 클래스 항목을 참조 하세요.For step-by step information on using the CultureAndRegionInfoBuilder class to create a new or replacement culture, see the CultureAndRegionInfoBuilder class topic.

.NET Framework는 사용자 지정 문화권을 지원 하므로 문화권별 데이터를 사용할 때 다음 사항을 고려해 야 합니다.Because the .NET Framework supports custom cultures, you should consider the following when working with culture-specific data:

  • 사용자 지정 문화권에는 미리 정의 된 문화권의 범위를 초과 하는 값이 있을 수 있습니다.Custom cultures can have values that exceed the ranges of the predefined cultures. 예를 들어 일부 문화권의 경우 비정상적으로 긴 월 이름, 예기치 않은 날짜 또는 시간 형식 또는 기타 비정상적인 데이터가 있습니다.For example, some cultures have unusually long month names, unexpected date or time formats, or other unusual data.

  • 사용자 인터페이스에 문화권별 데이터를 표시 하는 경우 사용자의 사용자 지정을 준수 해야 합니다. 예를 들어 사용자에 게 24 시간 또는 yyyyMMdd 날짜 형식이 필요할 수 있습니다.When you display culture-specific data in the user interface, you should respect the user's customizations; for example, the user might want a 24-hour clock or a yyyyMMdd date format.

  • 사용자 지정 문화권은 기본값을 재정의 합니다.Remember that custom cultures override default values. 따라서 문화권 데이터를 안정적으로 간주할 수 없습니다.Therefore, you cannot consider culture data to be stable. 국가 이름, 숫자 및 날짜 형식 및 맞춤법은 나중에 변경 될 수 있습니다.Country names, number and date formats, and spellings may change in the future. 날짜 및 시간 구문 분석 함수에 전달할 날짜 및 시간 문자열과 같은 문화권 구분 데이터를 serialize 하려면 고정 문화권 또는 특정를 사용 해야 합니다.If you want to serialize culture-sensitive data such as date and time strings to be passed to the date and time parsing functions, you should use the invariant culture or a specific .

시스템에 설치 된 사용자 지정 문화권의 CultureTypes 속성 값에는 System.Globalization.CultureTypes 플래그가 포함 되 고, 사용자 지정 문화권에는 LOCALE_CUSTOM_UNSPECIFIED (0x1000 또는 4096)의 LCID 속성 값이 할당 됩니다.The CultureTypes property value of custom cultures installed on a system includes the System.Globalization.CultureTypes flag, and custom cultures are assigned an LCID property value of LOCALE_CUSTOM_UNSPECIFIED (0x1000, or 4096). Windows 10부터이 값은 전체 문화권 데이터가 부족 한 시스템 정의 문화권에도 할당 됩니다.Note that, starting with Windows 10, this value is also assigned to system-defined cultures that lack complete cultural data.

CultureInfo 및 culture 데이터CultureInfo and cultural data

.NET은 구현, 플랫폼 및 버전에 따라 다양 한 소스 중 하나에서 해당 문화권 데이터를 파생 시킵니다..NET derives its cultural data from a one of a variety of sources, depending on implementation, platform, and version:

  • .NET Framework 3.5 이전 버전에서 culture 데이터는 Windows 운영 체제와 .NET Framework 모두에서 제공 됩니다.In .NET Framework 3.5 and earlier versions, cultural data is provided by both the Windows operating system and the .NET Framework.

  • .NET Framework 4 이상 버전에서는 Windows 운영 체제에서 문화권 데이터를 제공 합니다.In .NET Framework 4 and later versions, cultural data is provided by the Windows operating system.

  • Windows에서 실행 되는 모든 버전의 .NET Core에서 문화권 데이터는 Windows 운영 체제에 의해 제공 됩니다.In all versions of .NET Core running on Windows, cultural data is provided by the Windows operating system.

  • Unix 플랫폼에서 실행 되는 모든 버전의 .NET Core에서 문화권 데이터는 유니코드 (ICU) 라이브러리에 대 한 국제 구성 요소에 의해 제공 됩니다.In all versions of .NET Core running on Unix platforms, cultural data is provided by the International Components for Unicode (ICU) Library. 특정 버전의 ICU 라이브러리는 개별 운영 체제에 따라 달라 집니다.The specific version of the ICU Library depends on the individual operating system.

따라서 특정 .NET 구현, 플랫폼 또는 버전에서 사용할 수 있는 문화권은 다른 .NET 구현, 플랫폼 또는 버전에서 사용 하지 못할 수 있습니다.Because of this, a culture available on a particular .NET implementation, platform, or version may not be available on a different .NET implementation, platform, or version.

일부 CultureInfo 개체는 기본 플랫폼에 따라 달라 집니다.Some CultureInfo objects differ depending on the underlying platform. 특히 "zh-cn", 중국어 (간체, 중국), zh-cn 또는 중국어 (번체, 대만)는 Windows 시스템에서 사용할 수 있는 문화권 이지만 Unix 시스템에서는 별칭이 지정 된 문화권입니다.In particular, "zh-CN", or Chinese (Simplified, China) and zh-TW, or Chinese (Traditional, Taiwan), are available cultures on Windows systems, but they are aliased cultures on Unix systems. "zh-cn"은 "zh-cn-Hans-CN" 문화권에 대 한 별칭이 고 "zh-cn"는 "zh-cn-Zh-hant" 문화권의 별칭입니다."zh-CN" is an alias for the "zh-Hans-CN" culture, and "zh-TW" is an alias for the "zh-Hant-TW" culture. 별칭이 지정 된 문화권은 GetCultures 메서드에 대 한 호출에 의해 반환 되지 않으며, 서로 다른 Parent 문화권을 비롯 한 다양 한 속성 값이 해당 Windows의 해당 요소와 다를 수 있습니다.Aliased cultures are not returned by calls to the GetCultures method and may have different property values, including different Parent cultures, than their Windows counterparts. Zh-cn 및 zh-cn 문화권의 경우 이러한 differenes에는 다음이 포함 됩니다.For the zh-CN and zh-TW cultures, these differenes include the following:

  • Windows 시스템에서 "zh-cn" 문화권의 부모 문화권은 "zh-cn-Hans"이 고, "zh-cn" 문화권의 부모 문화권은 "zh-cn-Zh-hant"입니다.On Windows systems, the parent culture of the "zh-CN" culture is "zh-Hans", and the parent culture of the "zh-TW" culture is "zh-Hant". 이러한 두 문화권의 부모 문화권은 모두 "zh-cn"입니다.The parent culture of both these cultures is "zh". Unix 시스템에서 두 문화권의 부모는 "zh-cn"입니다.On Unix systems, the parents of both cultures are "zh". 즉, "zh-cn" 또는 "zh-cn" 문화권에 대 한 문화권별 리소스를 제공 하지 않지만 중립 "zh-cn-Hans" 또는 "zh-cn" 문화권에 대 한 리소스를 제공 하지 않는 경우 응용 프로그램은 Windows의 중립 문화권에 대 한 리소스를 로드 하지만 Unix에서는 로드 하지 않습니다. .This means that, if you don't provide culture-specific resources for the "zh-CN" or "zh-TW" cultures but do provide a resources for the neutral "zh-Hans" or "zh-Hant" culture, your application will load the resources for the neutral culture on Windows but not on Unix. Unix 시스템에서는 스레드 CurrentUICulture를 "zh-cn-Hans" 또는 "zh-cn-Zh-hant"로 명시적으로 설정 해야 합니다.On Unix systems, you must explicitly set the thread's CurrentUICulture to either "zh-Hans" or "zh-Hant".

  • Windows 시스템에서는 "zh-cn" 문화권을 나타내는 인스턴스에서 CultureInfo.Equals를 호출 하 고 "zh-cn-Hans-CN" 인스턴스를 전달 하 여 true을 반환 합니다.On Windows systems, calling CultureInfo.Equals on an instance that represents the "zh-CN" culture and passing it a "zh-Hans-CN" instance returns true. Unix 시스템에서 메서드 호출은 false을 반환 합니다.On Unix systems, the method call returns false. 이 동작은 "zh-cn" CultureInfo 인스턴스에서 Equals를 호출 하 고 "zh-cn-Zh-hant" 인스턴스를 전달 하는 데에도 적용 됩니다.This behavior also applies to calling Equals on a "zh-TW" CultureInfo instance and passing it a "zh-Hant-Tw" instance.

동적 문화권 데이터Dynamic culture data

고정 문화권을 제외 하 고 문화권 데이터는 동적입니다.Except for the invariant culture, culture data is dynamic. 미리 정의 된 문화권의 경우에도 마찬가지입니다.This is true even for the predefined cultures. 예를 들어 국가 또는 지역은 새로운 통화를 적용 하 고, 단어의 철자를 변경 하거나, 기본 달력을 변경 하 고 culture 정의를 변경 하 여이를 추적 합니다.For example, countries or regions adopt new currencies, change their spellings of words, or change their preferred calendar, and culture definitions change to track this. 사용자 지정 문화권은 예 고 없이 변경 될 수 있으며, 모든 특정 문화권이 사용자 지정 대체 문화권에 의해 재정의 될 수 있습니다.Custom cultures are subject to change without notice, and any specific culture might be overridden by a custom replacement culture. 또한 아래에서 설명 했 듯이 개별 사용자는 문화 기본 설정을 재정의할 수 있습니다.Also, as discussed below, an individual user can override cultural preferences. 애플리케이션 런타임 시 culture 데이터를 항상 가져오기 해야 합니다.Applications should always obtain culture data at run time.

주의

데이터를 저장할 때 애플리케이션은 고정 문화권, 이진 형식으로 또는 특정 문화권에 독립적인 형식을 사용 해야 합니다.When saving data, your application should use the invariant culture, a binary format, or a specific culture-independent format. 고정 문화권이 아닌 특정 문화권과 관련 된 현재 값에 따라 저장 된 데이터는 해당 문화권이 변경 되 면 읽을 수 없게 되거나 의미가 변경 될 수 있습니다.Data saved according to the current values associated with a particular culture, other than the invariant culture, might become unreadable or might change in meaning if that culture changes.

현재 문화권 및 현재 UI 문화권The current culture and current UI culture

.NET 응용 프로그램의 모든 스레드에는 현재 문화권과 현재 UI 문화권이 있습니다.Every thread in a .NET application has a current culture and a current UI culture. 현재 문화권에 따라 날짜, 시간, 숫자 및 통화 값, 텍스트 정렬 순서, 대/소문자 규칙, 문자열 비교 방법이 결정 됩니다.The current culture determines the formatting conventions for dates, times, numbers, and currency values, the sort order of text, casing conventions, and the ways in which strings are compared. 현재 UI 문화권은 런타임에 문화권 관련 리소스를 검색 하는 데 사용 됩니다.The current UI culture is used to retrieve culture-specific resources at runtime.

참고

현재 및 현재 UI 문화권이 스레드별로 결정 되는 방법에 대 한 자세한 내용은 culture 및 threads 섹션을 참조 하세요.For information on how the current and current UI culture is determined on a per-thread basis, see the Culture and threads section. 스레드에서 현재 및 현재 UI 문화권을 결정 하는 방법을 알아보려면 참조는 새 애플리케이션 도메인에 애플리케이션 도메인 경계를 교차 하는 스레드를 실행 합니다 문화권 및 애플리케이션 도메인 섹션입니다.For information on how the current and current UI culture is determined on threads executing in a new application domain, and on threads that cross application domain boundaries, see the Culture and application domains section. 작업 기반 비동기 작업을 수행 하는 스레드에서 현재 및 현재를 결정 하는 방법에 대 한 자세한 내용은 문화권 및 작업 기반 비동기 작업 섹션을 참조 하세요.For information on how the current and current is determined on threads performing task-based asynchronous operations, see the Culture and task-based asynchronous operations section.

현재 문화권에 대 한 자세한 내용은 CultureInfo.CurrentCulture 속성 항목을 참조 하세요.For more detailed information on the current culture, see the CultureInfo.CurrentCulture property topic. 현재 UI 문화권에 대 한 자세한 내용은 CultureInfo.CurrentUICulture 속성 항목을 참조 하세요.For more detailed information on the current UI culture, see the CultureInfo.CurrentUICulture property topic.

현재 UI 문화권 및 현재 UI 문화권 검색Retrieving the current and current UI cultures

다음 두 가지 방법 중 하나로 현재 문화권을 나타내는 CultureInfo 개체를 가져올 수 있습니다.You can get a CultureInfo object that represents the current culture in either of two ways:

다음 예제에서는 두 속성 값을 검색 하 고, 두 값이 같은지를 비교 하 여 현재 문화권의 이름을 표시 합니다.The following example retrieves both property values, compares them to show that they are equal, and displays the name of the current culture.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      CultureInfo culture1 = CultureInfo.CurrentCulture;
      CultureInfo culture2 = Thread.CurrentThread.CurrentCulture;
      Console.WriteLine("The current culture is {0}", culture1.Name);
      Console.WriteLine("The two CultureInfo objects are equal: {0}",
                        culture1 == culture2);
   }
}
// The example displays output like the following:
//     The current culture is en-US
//     The two CultureInfo objects are equal: True
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      Dim culture1 As CultureInfo = CultureInfo.CurrentCulture
      Dim culture2 As CultureInfo = Thread.CurrentThread.CurrentCulture
      Console.WriteLine("The current culture is {0}", culture1.Name)
      Console.WriteLine("The two CultureInfo objects are equal: {0}",
                        culture1.Equals(culture2))
   End Sub
End Module
' The example displays output like the following:
'     The current culture is en-US
'     The two CultureInfo objects are equal: True

다음 두 가지 방법 중 하나로 현재 UI 문화권을 나타내는 CultureInfo 개체를 가져올 수 있습니다.You can get a CultureInfo object that represents the current UI culture in either of two ways:

다음 예제에서는 두 속성 값을 검색 하 고, 두 값이 같은지를 비교 하 여 현재 UI 문화권의 이름을 표시 합니다.The following example retrieves both property values, compares them to show that they are equal, and displays the name of the current UI culture.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      CultureInfo uiCulture1 = CultureInfo.CurrentUICulture;
      CultureInfo uiCulture2 = Thread.CurrentThread.CurrentUICulture;
      Console.WriteLine("The current UI culture is {0}", uiCulture1.Name);
      Console.WriteLine("The two CultureInfo objects are equal: {0}",
                        uiCulture1 == uiCulture2);
   }
}
// The example displays output like the following:
//     The current UI culture is en-US
//     The two CultureInfo objects are equal: True
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      Dim uiCulture1 As CultureInfo = CultureInfo.CurrentUICulture
      Dim uiCulture2 As CultureInfo = Thread.CurrentThread.CurrentUICulture
      Console.WriteLine("The current UI culture is {0}", uiCulture1.Name)
      Console.WriteLine("The two CultureInfo objects are equal: {0}",
                        uiCulture1.Equals(uiCulture2))
   End Sub
End Module
' The example displays output like the following:
'     The current UI culture is en-US
'     The two CultureInfo objects are equal: True

현재 UI 문화권 및 현재 UI 문화권 설정Setting the current and current UI cultures

스레드의 문화권 및 UI 문화권을 변경 하려면 다음을 수행 합니다.To change the culture and UI culture of a thread, do the following:

  1. CultureInfo 클래스 생성자를 호출 하 고 문화권의 이름을 전달 하 여 해당 문화권을 나타내는 CultureInfo 개체를 인스턴스화합니다.Instantiate a CultureInfo object that represents that culture by calling a CultureInfo class constructor and passing it the name of the culture. CultureInfo(String) 생성자는 새 문화권이 현재 Windows 문화권과 동일한 경우 사용자 재정의를 반영 하는 CultureInfo 개체를 인스턴스화합니다.The CultureInfo(String) constructor instantiates a CultureInfo object that reflects user overrides if the new culture is the same as the current Windows culture. CultureInfo(String, Boolean) 생성자를 사용 하면 새 문화권이 현재 Windows 문화권과 동일한 경우 새로 인스턴스화된 CultureInfo 개체가 사용자 재정의를 반영 하는지 여부를 지정할 수 있습니다.The CultureInfo(String, Boolean) constructor allows you to specify whether the newly instantiated CultureInfo object reflects user overrides if the new culture is the same as the current Windows culture.

  2. CultureInfo 개체를 .NET Core의 CultureInfo.CurrentCulture 또는 CultureInfo.CurrentUICulture 속성에 할당 하 고 4.6 이상 버전을 .NET Framework 합니다.Assign the CultureInfo object to the CultureInfo.CurrentCulture or CultureInfo.CurrentUICulture property on .NET Core and .NET Framework 4.6 and later versions. (.NET Framework 4.5.2 이전 버전에서 CultureInfo 개체를 Thread.CurrentCulture 또는 Thread.CurrentUICulture 속성에 할당 합니다.(On .NET Framework 4.5.2 and earlier versions, youc an assign the CultureInfo object to the Thread.CurrentCulture or Thread.CurrentUICulture property.)

다음 예제에서는 현재 문화권을 검색 합니다.The following example retrieves the current culture. 프랑스어 (프랑스) 문화권이 아닌 경우 현재 문화권을 프랑스어 (프랑스)로 변경 합니다.If it is anything other than the French (France) culture, it changes the current culture to French (France). 그렇지 않으면 현재 문화권이 프랑스어 (룩셈부르크)로 변경 됩니다.Otherwise, it changes the current culture to French (Luxembourg).

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo current = CultureInfo.CurrentCulture;
      Console.WriteLine("The current culture is {0}", current.Name);
      CultureInfo newCulture;
      if (current.Name.Equals("fr-FR"))
         newCulture = new CultureInfo("fr-LU");
      else   
         newCulture = new CultureInfo("fr-FR");
      
      CultureInfo.CurrentCulture = newCulture;
      Console.WriteLine("The current culture is now {0}", 
                        CultureInfo.CurrentCulture.Name);   
   }
}
// The example displays output like the following:
//     The current culture is en-US
//     The current culture is now fr-FR
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim current As CultureInfo = CultureInfo.CurrentCulture
      Console.WriteLine("The current culture is {0}", current.Name)
      Dim newCulture As CultureInfo
      If current.Name.Equals("fr-FR") Then
         newCulture = New CultureInfo("fr-LU")
      Else   
         newCulture = new CultureInfo("fr-FR")
      End If
      
      CultureInfo.CurrentCulture = newCulture
      Console.WriteLine("The current culture is now {0}", 
                        CultureInfo.CurrentCulture.Name)   
   End Sub
End Module
' The example displays output like the following:
'     The current culture is en-US
'     The current culture is now fr-FR

다음 예제에서는 현재 문화권을 검색 합니다.The following example retrieves the current culture. 슬로베니아어 (슬로베니아) 문화권이 다른 모든 경우 현재 문화권을 슬로베니아어 (슬로베니아)로 변경 합니다.If it is anything other the Slovenian (Slovenia) culture, it changes the current culture to Slovenian (Slovenia). 그렇지 않으면 현재 문화권이 크로아티아어 (크로아티아)로 변경 됩니다.Otherwise, it changes the current culture to Croatian (Croatia).

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo current = CultureInfo.CurrentUICulture;
      Console.WriteLine("The current UI culture is {0}", current.Name);
      CultureInfo newUICulture;
      if (current.Name.Equals("sl-SI"))
         newUICulture = new CultureInfo("hr-HR");
      else   
         newUICulture = new CultureInfo("sl-SI");
      
      CultureInfo.CurrentUICulture = newUICulture;
      Console.WriteLine("The current UI culture is now {0}", 
                        CultureInfo.CurrentUICulture.Name);   
   }
}
// The example displays output like the following:
//     The current UI culture is en-US
//     The current UI culture is now sl-SI
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim current As CultureInfo = CultureInfo.CurrentUICulture
      Console.WriteLine("The current UI culture is {0}", current.Name)
      Dim newUICulture As CultureInfo
      If current.Name.Equals("sl-SI") Then
         newUICulture = New CultureInfo("hr-HR")
      Else   
         newUICulture = new CultureInfo("sl-SI")
      End If
      
      CultureInfo.CurrentUICulture = newUICulture
      Console.WriteLine("The current UI culture is now {0}", 
                        CultureInfo.CurrentUICulture.Name)   
   End Sub
End Module
' The example displays output like the following:
'     The current UI culture is en-US
'     The current UI culture is now sl-SI

모든 문화권 가져오기Getting all cultures

GetCultures 메서드를 호출 하 여 로컬 컴퓨터에서 사용할 수 있는 문화권 또는 문화권의 배열 특정 범주를 검색할 수 있습니다.You can retrieve an array specific categories of cultures or of all the cultures available on the local computer by calling the GetCultures method. 예를 들어 사용자 지정 문화권, 특정 문화권 또는 중립 문화권은 단독으로 또는 함께 검색할 수 있습니다.For example, you can retrieve custom cultures, specific cultures, or neutral cultures either alone or in combination.

다음 예제에서는 GetCultures 메서드를 두 번 호출 합니다. 먼저 System.Globalization.CultureTypes 열거형 멤버를 사용 하 여 모든 사용자 지정 문화권을 검색 한 다음 System.Globalization.CultureTypes 열거형 멤버를 사용 하 여 모든 대체 문화권을 검색 합니다.The following example calls the GetCultures method twice, first with the System.Globalization.CultureTypes enumeration member to retrieve all custom cultures, and then with the System.Globalization.CultureTypes enumeration member to retrieve all replacement cultures.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      // Get all custom cultures.
      CultureInfo[] custom = CultureInfo.GetCultures(CultureTypes.UserCustomCulture);
      if (custom.Length == 0) { 
         Console.WriteLine("There are no user-defined custom cultures.");
      }
      else {
         Console.WriteLine("Custom cultures:");
         foreach (var culture in custom) 
            Console.WriteLine("   {0} -- {1}", culture.Name, culture.DisplayName);    
      }
      Console.WriteLine();
      
      // Get all replacement cultures.
      CultureInfo[] replacements = CultureInfo.GetCultures(CultureTypes.ReplacementCultures);
      if (replacements.Length == 0) { 
         Console.WriteLine("There are no replacement cultures.");
      }                                             
      else {
         Console.WriteLine("Replacement cultures:");
         foreach (var culture in replacements) 
            Console.WriteLine("   {0} -- {1}", culture.Name, culture.DisplayName);    
      }
      Console.WriteLine();
   }
}
// The example displays output like the following:
//     Custom cultures:
//        x-en-US-sample -- English (United States)
//        fj-FJ -- Boumaa Fijian (Viti)
//     
//     There are no replacement cultures.
Imports System.Globalization

Module Example
   Public Sub Main()
      ' Get all custom cultures.
      Dim custom() As CultureInfo = CultureInfo.GetCultures(CultureTypes.UserCustomCulture)
      If custom.Length = 0 Then 
         Console.WriteLine("There are no user-defined custom cultures.")
      Else
         Console.WriteLine("Custom cultures:")
         For Each culture In custom 
            Console.WriteLine("   {0} -- {1}", culture.Name, culture.DisplayName)
         Next       
      End If
      Console.WriteLine()
      
      ' Get all replacement cultures.
      Dim replacements() As CultureInfo = CultureInfo.GetCultures(CultureTypes.ReplacementCultures)
      If replacements.Length = 0 Then 
         Console.WriteLine("There are no replacement cultures.")
      Else 
         Console.WriteLine("Replacement cultures:")
         For Each culture in replacements 
            Console.WriteLine("   {0} -- {1}", culture.Name, culture.DisplayName)    
         Next
      End If
      Console.WriteLine()
   End Sub
End Module
' The example displays output like the following:
'     Custom cultures:
'        x-en-US-sample -- English (United States)
'        fj-FJ -- Boumaa Fijian (Viti)
'     
'     There are no replacement cultures.

문화권 및 스레드Culture and threads

새 애플리케이션 스레드가 시작 될 때 현재 문화권 및 현재 UI 문화권의 현재 스레드 문화권과 아니라에 현재 시스템 문화권에 의해 정의 됩니다.When a new application thread is started, its current culture and current UI culture are defined by the current system culture, and not by the current thread culture. 다음 예제에서 차이점을 보여 줍니다.The following example illustrates the difference. 프랑스어 (프랑스) 문화권 (FR) 애플리케이션 스레드의 현재 UI 문화권 및 현재 문화권으로 설정합니다.It sets the current culture and current UI culture of an application thread to the French (France) culture (fr-FR). 현재 문화권이 이미 fr-fr 인 경우 예제에서는이를 영어 (미국) 문화권 (en-us)으로 설정 합니다.If the current culture is already fr-FR, the example sets it to the English (United States) culture (en-US). 통화 값으로 세 개의 난수를 표시 한 다음 새 스레드를 만듭니다 .이 스레드는 세 개의 난수를 통화 값으로 표시 합니다.It displays three random numbers as currency values and then creates a new thread, which, in turn, displays three more random numbers as currency values. 하지만 새 스레드에 의해 표시 되는 통화 값은 예제에서에서 출력으로 기본 애플리케이션 스레드에서만에서 출력 달리 프랑스어 (프랑스) 문화권의 서식 규칙을 반영 하지 않습니다.But as the output from the example shows, the currency values displayed by the new thread do not reflect the formatting conventions of the French (France) culture, unlike the output from the main application thread.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   static Random rnd = new Random();
   
   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }
      else {
         // Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      ThreadProc();
          
      Thread worker = new Thread(ThreadProc);
      worker.Name = "WorkerThread";
      worker.Start();
   }
   
   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }
   
   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }
   
   private static void ThreadProc()
   {
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          8,11 €
//          1,48 €
//          8,99 €
//          9,04 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: en-US/en-US
//       Some currency values:
//          $6.72
//          $6.35
//          $2.90
//          $7.72
Imports System.Globalization
Imports System.Threading

Module Example
   Dim rnd As New Random()
   
   Public Sub Main()
      If Thread.CurrentThread.CurrentCulture.Name <> "fr-FR" Then
         ' If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR")
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
      Else
         ' Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US")
      End If
      ThreadProc()
          
       Dim worker As New Thread(AddressOf ThreadProc)
       worker.Name = "WorkerThread"
       worker.Start()
   End Sub
   
   Private Sub DisplayThreadInfo()
      Console.WriteLine()
      Console.WriteLine("Current Thread Name: '{0}'", 
                        Thread.CurrentThread.Name)
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name)                        
   End Sub
   
   Private Sub DisplayValues()
      ' Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:")
      For ctr As Integer = 0 To 3
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10)                        
      Next
   End Sub
   
   Private Sub ThreadProc()
      DisplayThreadInfo()
      DisplayValues()
   End Sub
End Module
' The example displays output similar to the following:
'       Current Thread Name: ''
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          8,11 €
'          1,48 €
'          8,99 €
'          9,04 €
'       
'       Current Thread Name: 'WorkerThread'
'       Current Thread Culture/UI Culture: en-US/en-US
'       Some currency values:
'          $6.72
'          $6.35
'          $2.90
'          $7.72

이전의.NET Framework의 버전에서을 .NET Framework 4.5.NET Framework 4.5가장 애플리케이션 수준의 문화권의 이름을 전달 하는 다른 모든 작업자 스레드를 사용 하 여 주 애플리케이션 스레드가 동일한 문화권을 공유 하는지 확인 하는 일반적인 방법은 또는 CultureInfo 개체 애플리케이션 수준의 문화권을 나타내는 System.Threading.ParameterizedThreadStart 위임 합니다.In versions of the .NET Framework before the .NET Framework 4.5.NET Framework 4.5, the most common way to ensure that the main application thread shares the same culture with all other worker threads is to pass either the name of the application-wide culture or a CultureInfo object that represents the application-wide culture to a System.Threading.ParameterizedThreadStart delegate. 다음 예제에서는이 방법을 사용 하 여 두 스레드에 표시 되는 통화 값이 동일한 문화권의 서식 지정 규칙을 반영 하는지 확인 합니다.The following example uses this approach to ensure that the currency values displayed by two threads reflect the formatting conventions of the same culture.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   static Random rnd = new Random();
   
   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }   
      else {
         // Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      DisplayThreadInfo();
      DisplayValues();
          
       Thread worker = new Thread(Example.ThreadProc);
       worker.Name = "WorkerThread";
       worker.Start(Thread.CurrentThread.CurrentCulture);
   }
   
   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }
   
   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }
   
   private static void ThreadProc(Object obj) 
   {
      Thread.CurrentThread.CurrentCulture = (CultureInfo) obj;
      Thread.CurrentThread.CurrentUICulture = (CultureInfo) obj;
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          6,83 €
//          3,47 €
//          6,07 €
//          1,70 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          9,54 €
//          9,50 €
//          0,58 €
//          6,91 €
Imports System.Globalization
Imports System.Threading

Module Example
   Dim rnd As New Random()
   
   Public Sub Main()
      If Thread.CurrentThread.CurrentCulture.Name <> "fr-FR" Then
         ' If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR")
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
      Else
         ' Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US")
      End If
      DisplayThreadInfo()
      DisplayValues()
          
       Dim worker As New Thread(AddressOf ThreadProc)
       worker.Name = "WorkerThread"
       worker.Start(Thread.CurrentThread.CurrentCulture)
   End Sub
   
   Private Sub DisplayThreadInfo()
      Console.WriteLine()
      Console.WriteLine("Current Thread Name: '{0}'", 
                        Thread.CurrentThread.Name)
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name)                        
   End Sub
   
   Private Sub DisplayValues()
      ' Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:")
      For ctr As Integer = 0 To 3
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10)                        
      Next
   End Sub
   
   Private Sub ThreadProc(obj As Object)
      Thread.CurrentThread.CurrentCulture = CType(obj, CultureInfo)
      Thread.CurrentThread.CurrentUICulture = CType(obj, CultureInfo)
      DisplayThreadInfo()
      DisplayValues()
   End Sub
End Module
' The example displays output similar to the following:
'       Current Thread Name: ''
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          6,83 €
'          3,47 €
'          6,07 €
'          1,70 €
'       
'       Current Thread Name: 'WorkerThread'
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          9,54 €
'          9,50 €
'          0,58 €
'          6,91 €

ThreadPool.QueueUserWorkItem(WaitCallback, Object) 메서드를 호출 하 여 비슷한 방식으로 스레드 풀 스레드의 culture 및 UI 문화권을 설정할 수 있습니다.You can set the culture and UI culture of thread pool threads in a similar manner by calling the ThreadPool.QueueUserWorkItem(WaitCallback, Object) method.

부터 합니다 .NET Framework 4.5.NET Framework 4.5를 설정할 수 있습니다 문화권 및 UI 문화권의 모든 스레드가 애플리케이션 도메인에서 할당 하 여 보다 직접적를 CultureInfo 해당 문화권을 나타내는 개체를 DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 속성.Starting with the .NET Framework 4.5.NET Framework 4.5, you can set the culture and UI culture of all threads in an application domain more directly by assigning a CultureInfo object that represents that culture to the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties. 다음 예제에서는 동일한 문화권을 공유 하는 기본 애플리케이션 도메인의 모든 스레드를 확인 하려면 이러한 속성을 사용 합니다.The following example uses these properties to ensure that all threads in the default application domain share the same culture.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   static Random rnd = new Random();
   
   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }   
      else {
         // Set culture to en-US.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      ThreadProc();
          
      Thread worker = new Thread(Example.ThreadProc);
      worker.Name = "WorkerThread";
      worker.Start();
   }
   
   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }
   
   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }
   
   private static void ThreadProc() 
   {
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          6,83 €
//          3,47 €
//          6,07 €
//          1,70 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          9,54 €
//          9,50 €
//          0,58 €
//          6,91 €
Imports System.Globalization
Imports System.Threading

Module Example
   Dim rnd As New Random()
   
   Public Sub Main()
      If Thread.CurrentThread.CurrentCulture.Name <> "fr-FR" Then
         ' If current culture is not fr-FR, set culture to fr-FR.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR")
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
      Else
         ' Set culture to en-US.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("en-US")
      End If
      ThreadProc()

       Dim worker As New Thread(AddressOf ThreadProc)
       worker.Name = "WorkerThread"
       worker.Start()
   End Sub
   
   Private Sub DisplayThreadInfo()
      Console.WriteLine()
      Console.WriteLine("Current Thread Name: '{0}'", 
                        Thread.CurrentThread.Name)
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name)                        
   End Sub
   
   Private Sub DisplayValues()
      ' Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:")
      For ctr As Integer = 0 To 3
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10)                        
      Next
   End Sub
   
   Private Sub ThreadProc()
      DisplayThreadInfo()
      DisplayValues()
   End Sub
End Module
' The example displays output similar to the following:
'       Current Thread Name: ''
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          6,83 €
'          3,47 €
'          6,07 €
'          1,70 €
'       
'       Current Thread Name: 'WorkerThread'
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          9,54 €
'          9,50 €
'          0,58 €
'          6,91 €

경고

하지만 합니다 DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 속성은 정적 멤버를 기본 문화권 및 이러한 속성 값이 설정 된 당시에는 애플리케이션 도메인에 대해서만 기본 UI 문화권을 정의 합니다.Although the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties are static members, they define the default culture and default UI culture only for the application domain that is current at the time these property values are set. 자세한 내용은 다음 섹션을 참조 하세요 문화권 및 애플리케이션 도메인합니다.For more information, see the next section, Culture and application domains.

값을 할당 하는 경우는 DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 속성, 문화권 및 UI 문화권 애플리케이션 도메인에 있는 스레드의 경우 변경할 수도 있습니다 명시적으로 할당 하지 않은 문화권입니다.When you assign values to the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties, the culture and UI culture of the threads in the application domain also change if they have not explicitly been assigned a culture. 그러나 이러한 스레드는 현재 애플리케이션 도메인에서 실행 하는 동안에 새 culture 설정을 반영 합니다.However, these threads reflect the new culture settings only while they execute in the current application domain. 이러한 스레드를 다른 애플리케이션 도메인에서 실행 하는 경우 해당 문화권에 해당 애플리케이션 도메인에 대해 정의 된 기본 문화권이 됩니다.If these threads execute in another application domain, their culture becomes the default culture defined for that application domain. 결과적으로, 것이 좋습니다에 의존 하지 않고 항상 주 애플리케이션 스레드의 문화권을 설정 하는 DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 속성을 변경 합니다.As a result, we recommend that you always set the culture of the main application thread, and not rely on the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to change it.

문화권 및 애플리케이션 도메인Culture and application domains

DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 하는 속성 값을 설정 하거나 검색할 때 현재 애플리케이션 도메인에 대해서만 기본 문화권을 명시적으로 정의 하는 정적 속성입니다.DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture are static properties that explicitly define a default culture only for the application domain that is current when the property value is set or retrieved. 다음 예제에서는 기본 애플리케이션 도메인에서 기본 문화권 및 기본 UI 문화권을 프랑스어 (프랑스)로 설정 하 고 사용 하 여는 AppDomainSetup 클래스 및 AppDomainInitializer 대리자가 새 애플리케이션 도메인을의 기본 문화권 및 UI 문화권 설정 러시아어 (러시아)입니다.The following example sets the default culture and default UI culture in the default application domain to French (France), and then uses the AppDomainSetup class and the AppDomainInitializer delegate to set the default culture and UI culture in a new application domain to Russian (Russia). 그런 다음 단일 스레드는 각 애플리케이션 도메인에서 두 메서드를 실행합니다.A single thread then executes two methods in each application domain. Note는 스레드의 문화권과 UI 문화권은 명시적으로 설정 하지; 기본 문화권 및 UI 문화권은 스레드가 실행 중인 애플리케이션 도메인에서 파생 됩니다.Note that the thread's culture and UI culture are not explicitly set; they are derived from the default culture and UI culture of the application domain in which the thread is executing. 또한 합니다 DefaultThreadCurrentCulture 하 고 DefaultThreadCurrentUICulture 속성 기본값을 반환 CultureInfo 메서드를 호출 하는 경우 현재 애플리케이션 도메인의 값입니다.Note also that the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties return the default CultureInfo values of the application domain that is current when the method call is made.

using System;
using System.Globalization;
using System.Reflection;
using System.Threading;

public class Example
{
   public static void Main()
   {
      // Set the default culture and display the current date in the current application domain.
      Info info1 = new Info();
      SetAppDomainCultures("fr-FR");
      
      // Create a second application domain.
      AppDomainSetup setup = new AppDomainSetup();
      setup.AppDomainInitializer = SetAppDomainCultures;
      setup.AppDomainInitializerArguments = new string[] { "ru-RU" };
      AppDomain domain = AppDomain.CreateDomain("Domain2", null, setup);
      // Create an Info object in the new application domain.
      Info info2 = (Info) domain.CreateInstanceAndUnwrap(typeof(Example).Assembly.FullName, 
                                                         "Info"); 

      // Execute methods in the two application domains.
      info2.DisplayDate();
      info2.DisplayCultures();
      
      info1.DisplayDate();
      info1.DisplayCultures();            
   }

   public static void SetAppDomainCultures(string[] names)
   {
      SetAppDomainCultures(names[0]);
   }
   
   public static void SetAppDomainCultures(string name)
   {
       try {
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture(name);
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture(name);
      }
      // If an exception occurs, we'll just fall back to the system default.
      catch (CultureNotFoundException) {
         return;
      }   
      catch (ArgumentException) {
         return;
      } 
   }
}

public class Info : MarshalByRefObject
{
   public void DisplayDate()
   {
      Console.WriteLine("Today is {0:D}", DateTime.Now);
   }
   
   public void DisplayCultures()
   {
      Console.WriteLine("Application domain is {0}", AppDomain.CurrentDomain.Id);
      Console.WriteLine("Default Culture: {0}", CultureInfo.DefaultThreadCurrentCulture);
      Console.WriteLine("Default UI Culture: {0}", CultureInfo.DefaultThreadCurrentUICulture);
   }
}
// The example displays the following output:
//       Today is 14 октября 2011 г.
//       Application domain is 2
//       Default Culture: ru-RU
//       Default UI Culture: ru-RU
//       Today is vendredi 14 octobre 2011
//       Application domain is 1
//       Default Culture: fr-FR
//       Default UI Culture: fr-FR
Imports System.Globalization
Imports System.Reflection
Imports System.Threading

Module Example
   Public Sub Main()
      ' Set the default culture and display the current date in the current application domain.
      Dim info1 As New Info()
      SetAppDomainCultures("fr-FR")
      
      ' Create a second application domain.
      Dim setup As New AppDomainSetup()
      setup.AppDomainInitializer = AddressOf SetAppDomainCultures
      setup.AppDomainInitializerArguments = { "ru-RU" }
      Dim domain As AppDomain = AppDomain.CreateDomain("Domain2", Nothing, setup)
      ' Create an Info object in the new application domain.
      Dim info2 As Info = CType(domain.CreateInstanceAndUnwrap(GetType(Example).Assembly.FullName, 
                                                               "Info"), Info) 

      ' Execute methods in the two application domains.
      info2.DisplayDate()
      info2.DisplayCultures()
      
      info1.DisplayDate()
      info1.DisplayCultures()            
   End Sub
   
   Public Sub SetAppDomainCultures(names() As String)
      SetAppDomainCultures(names(0))
   End Sub
   
   Public Sub SetAppDomainCultures(name As String)
       Try
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture(name)
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture(name)
      ' If an exception occurs, we'll just fall back to the system default.
      Catch e As CultureNotFoundException
         Return
      Catch e As ArgumentException
         Return
      End Try      
   End Sub
End Module

Public Class Info : Inherits MarshalByRefObject
   Public Sub DisplayDate()
      Console.WriteLine("Today is {0:D}", Date.Now)
   End Sub
   
   Public Sub DisplayCultures()
      Console.WriteLine("Application domain is {0}", AppDomain.CurrentDomain.Id)
      Console.WriteLine("Default Culture: {0}", CultureInfo.DefaultThreadCurrentCulture)
      Console.WriteLine("Default UI Culture: {0}", CultureInfo.DefaultThreadCurrentUICulture)
   End Sub
End Class
' The example displays the following output:
'       Today is 14 октября 2011 г.
'       Application domain is 2
'       Default Culture: ru-RU
'       Default UI Culture: ru-RU
'       Today is vendredi 14 octobre 2011
'       Application domain is 1
'       Default Culture: fr-FR
'       Default UI Culture: fr-FR

Culture 및 응용 프로그램 도메인에 대 한 자세한 내용은 응용 프로그램 도메인 항목에서 "응용 프로그램 도메인 및 스레드" 섹션을 참조 하세요.For more information about cultures and application domains, see the "Application Domains and Threads" section in the Application Domains topic.

문화권 및 작업 기반 비동기 작업Culture and task-based asynchronous operations

작업 기반 비동기 프로그래밍 패턴TaskTask<TResult> 개체를 사용 하 여 스레드 풀 스레드에서 비동기적으로 대리자를 실행 합니다.The task-based asynchronous programming pattern uses Task and Task<TResult> objects to asynchronously execute delegates on thread pool threads. 특정 작업을 실행 하는 특정 스레드는 미리 알려지지 않지만 런타임에만 결정 됩니다.The specific thread on which a particular task runs is not known in advance, but is determined only at runtime.

.NET Framework 4.6.NET Framework 4.6 이상 버전을 대상으로 하는 앱의 경우 culture는 비동기 작업 컨텍스트의 일부입니다.For apps that target the .NET Framework 4.6.NET Framework 4.6 or later versions, culture is part of an asynchronous operation's context. 즉, .NET Framework 4.6.NET Framework 4.6를 대상으로 하는 앱부터 비동기 작업은 기본적으로 CurrentCulture 값 및 해당 값이 시작 된 스레드의 CurrentUICulture 속성을 상속 합니다.In other words, starting with apps that target the .NET Framework 4.6.NET Framework 4.6, asynchronous operations by default inherit the values of the CurrentCulture and CurrentUICulture properties of the thread from which they are launched. 현재 문화권 또는 현재 UI 문화권이 시스템 문화권과 다른 경우 현재 문화권이 스레드 경계를 교차 하 고 비동기 작업을 실행 하는 스레드 풀 스레드의 현재 문화권이 됩니다.If the current culture or current UI culture differs from the system culture, the current culture crosses thread boundaries and becomes the current culture of the thread pool thread that is executing an asynchronous operation.

다음 예제에서는 간단한 설명을 제공합니다.The following example provides a simple illustration. TargetFrameworkAttribute 특성을 사용 하 여 .NET Framework 4.6.NET Framework 4.6를 대상으로 합니다.It uses the TargetFrameworkAttribute attribute to target the .NET Framework 4.6.NET Framework 4.6. 이 예제에서는 통화 값으로 형식이 지정 된 일부 숫자를 반환 하는 Func<TResult> 대리자 formatDelegate를 정의 합니다.The example defines a Func<TResult> delegate, formatDelegate, that returns some numbers formatted as currency values. 이 예제에서는 현재 시스템 문화권을 프랑스어 (프랑스)로 변경 하거나 프랑스어 (프랑스)가 이미 현재 문화권 인 경우 영어 (미국)로 변경 합니다.The example changes the current system culture to either French (France) or, if French (France) is already the current culture, English (United States). 그런 후에 다음을 수행 합니다.It then:

  • 기본 앱 스레드에서 동기적으로 실행 되도록 대리자를 직접 호출 합니다.Invokes the delegate directly so that it runs synchronously on the main app thread.

  • 스레드 풀 스레드에서 대리자를 비동기적으로 실행 하는 작업을 만듭니다.Creates a task that executes the delegate asynchronously on a thread pool thread.

  • Task.RunSynchronously 메서드를 호출 하 여 주 앱 스레드에서 대리자를 동기적으로 실행 하는 작업을 만듭니다.Creates a task that executes the delegate synchronously on the main app thread by calling the Task.RunSynchronously method.

예제의 출력에 표시 된 것 처럼 현재 문화권이 프랑스어 (프랑스)로 변경 되 면 작업을 비동기적으로 호출 하는 스레드의 현재 문화권이 비동기 작업에 대 한 현재 문화권이 됩니다.As the output from the example shows, when the current culture is changed to French (France), the current culture of the thread from which tasks are invoked asynchronously becomes the current culture for that asynchronous operation.

using System;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;

[assembly:TargetFramework(".NETFramework,Version=v4.6")]

public class Example
{
   
   public static void Main()
   {
       decimal[] values = { 163025412.32m, 18905365.59m };
       string formatString = "C2";
       Func<String> formatDelegate = () => { string output = String.Format("Formatting using the {0} culture on thread {1}.\n",
                                                                           CultureInfo.CurrentCulture.Name,
                                                                           Thread.CurrentThread.ManagedThreadId);
                                             foreach (var value in values)
                                                output += String.Format("{0}   ", value.ToString(formatString));
                                                   
                                             output += Environment.NewLine;
                                             return output;
                                           };
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId);
       // Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name);
       if (CultureInfo.CurrentCulture.Name == "fr-FR")
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
       else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

       Console.WriteLine("Changed the current culture to {0}.\n",
                         CultureInfo.CurrentCulture.Name);
       
       // Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:");
       Console.WriteLine(formatDelegate());
       
       // Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:"); 
       var t1 = Task.Run(formatDelegate);
       Console.WriteLine(t1.Result);
       
       Console.WriteLine("Executing a task synchronously:");
       var t2 = new Task<String>(formatDelegate); 
       t2.RunSynchronously();
       Console.WriteLine(t2.Result);
   }
}
// The example displays the following output:
//         The example is running on thread 1
//         The current culture is en-US
//         Changed the current culture to fr-FR.
//
//         Executing the delegate synchronously:
//         Formatting using the fr-FR culture on thread 1.
//         163 025 412,32 €   18 905 365,59 €
//
//         Executing a task asynchronously:
//         Formatting using the fr-FR culture on thread 3.
//         163 025 412,32 €   18 905 365,59 €
//
//         Executing a task synchronously:
//         Formatting using the fr-FR culture on thread 1.
//         163 025 412,32 €   18 905 365,59 €
Imports System.Globalization
Imports System.Runtime.Versioning
Imports System.Threading
Imports System.Threading.Tasks

<Assembly:TargetFramework(".NETFramework,Version=v4.6")>

Module Example
   Public Sub Main()
       Dim values() As Decimal = { 163025412.32d, 18905365.59d }
       Dim formatString As String = "C2"
       Dim formatDelegate As Func(Of String) = Function()
                                                  Dim output As String = String.Format("Formatting using the {0} culture on thread {1}.",
                                                                                       CultureInfo.CurrentCulture.Name,
                                                                                       Thread.CurrentThread.ManagedThreadId)
                                                  output += Environment.NewLine
                                                  For Each value In values
                                                     output += String.Format("{0}   ", value.ToString(formatString))
                                                  Next 
                                                  output += Environment.NewLine
                                                  Return output
                                               End Function
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId)
       ' Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name)
       If CultureInfo.CurrentCulture.Name = "fr-FR" Then
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
       Else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
       End If
       Console.WriteLine("Changed the current culture to {0}.",
                         CultureInfo.CurrentCulture.Name)
       Console.WriteLine()                  
       
       ' Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:")
       Console.WriteLine(formatDelegate())
       
       ' Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:") 
       Dim t1 = Task.Run(formatDelegate)
       Console.WriteLine(t1.Result)
       
       Console.WriteLine("Executing a task synchronously:")
       Dim t2 = New Task(Of String)(formatDelegate) 
       t2.RunSynchronously()
       Console.WriteLine(t2.Result)
   End Sub
End Module
' The example displays the following output:
'          The example is running on thread 1
'          The current culture is en-US
'          Changed the current culture to fr-FR.
'
'          Executing the delegate synchronously:
'          Formatting Imports the fr-FR culture on thread 1.
'          163 025 412,32 €   18 905 365,59 €
'
'          Executing a task asynchronously:
'          Formatting Imports the fr-FR culture on thread 3.
'          163 025 412,32 €   18 905 365,59 €
'
'          Executing a task synchronously:
'          Formatting Imports the fr-FR culture on thread 1.
'          163 025 412,32 €   18 905 365,59 €

.NET Framework 4.6.NET Framework 4.6이전에 .NET Framework 버전을 대상으로 하거나 특정 버전의 .NET Framework를 대상으로 하지 않는 앱의 경우 호출 스레드의 문화권이 작업 컨텍스트의 일부가 아닙니다.For apps that target versions of the .NET Framework prior to the .NET Framework 4.6.NET Framework 4.6, or for apps that do not target a particular version of the .NET Framework, the culture of the calling thread is not part of a task's context. 대신, 명시적으로 정의 되지 않은 경우 기본적으로 새 스레드의 문화권이 시스템 문화권입니다.Instead, unless one is explicitly defined, the culture of new threads by default is the system culture. 다음 예제는 이전 예제와 동일 하며 TargetFrameworkAttribute 특성이 없다는 점을 제외 하 고는이를 보여 줍니다.The following example, which is identical to the previous example except that it lacks the TargetFrameworkAttribute attribute, illustrates this. 예제가 실행 된 시스템의 시스템 문화권이 영어 (미국) 이기 때문에 스레드 풀 스레드에서 비동기적으로 실행 되는 작업의 문화권은 fr-fr이 아닌 en-us입니다.Because the system culture of the system on which the example executed was English (United States), the culture of the task that executes asynchronously on a thread pool thread is en-US rather than fr-FR.

using System;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
       decimal[] values = { 163025412.32m, 18905365.59m };
       string formatString = "C2";
       Func<String> formatDelegate = () => { string output = String.Format("Formatting using the {0} culture on thread {1}.\n",
                                                                           CultureInfo.CurrentCulture.Name,
                                                                           Thread.CurrentThread.ManagedThreadId);
                                             foreach (var value in values)
                                                output += String.Format("{0}   ", value.ToString(formatString));
                                                   
                                             output += Environment.NewLine;
                                             return output;
                                           };
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId);
       // Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name);
       if (CultureInfo.CurrentCulture.Name == "fr-FR")
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
       else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

       Console.WriteLine("Changed the current culture to {0}.\n",
                         CultureInfo.CurrentCulture.Name);
       
       // Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:");
       Console.WriteLine(formatDelegate());
       
       // Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:"); 
       var t1 = Task.Run(formatDelegate);
       Console.WriteLine(t1.Result);
       
       Console.WriteLine("Executing a task synchronously:");
       var t2 = new Task<String>(formatDelegate); 
       t2.RunSynchronously();
       Console.WriteLine(t2.Result);
   }
}
// The example displays the following output:
//     The example is running on thread 1
//     The current culture is en-US
//     Changed the current culture to fr-FR.
//     
//     Executing the delegate synchronously:
//     Formatting using the fr-FR culture on thread 1.
//     163 025 412,32 €   18 905 365,59 €
//     
//     Executing a task asynchronously:
//     Formatting using the en-US culture on thread 3.
//     $163,025,412.32   $18,905,365.59
//     
//     Executing a task synchronously:
//     Formatting using the fr-FR culture on thread 1.
//     163 025 412,32 €   18 905 365,59 €
Imports System.Globalization
Imports System.Runtime.Versioning
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
       Dim values() As Decimal = { 163025412.32d, 18905365.59d }
       Dim formatString As String = "C2"
       Dim formatDelegate As Func(Of String) = Function()
                                                  Dim output As String = String.Format("Formatting using the {0} culture on thread {1}.",
                                                                                       CultureInfo.CurrentCulture.Name,
                                                                                       Thread.CurrentThread.ManagedThreadId)
                                                  output += Environment.NewLine
                                                  For Each value In values
                                                     output += String.Format("{0}   ", value.ToString(formatString))
                                                  Next 
                                                  output += Environment.NewLine
                                                  Return output
                                               End Function
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId)
       ' Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name)
       If CultureInfo.CurrentCulture.Name = "fr-FR" Then
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
       Else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
       End If
       Console.WriteLine("Changed the current culture to {0}.",
                         CultureInfo.CurrentCulture.Name)
       Console.WriteLine()                  
       
       ' Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:")
       Console.WriteLine(formatDelegate())
       
       ' Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:") 
       Dim t1 = Task.Run(formatDelegate)
       Console.WriteLine(t1.Result)
       
       Console.WriteLine("Executing a task synchronously:")
       Dim t2 = New Task(Of String)(formatDelegate) 
       t2.RunSynchronously()
       Console.WriteLine(t2.Result)
   End Sub
End Module
' The example displays the following output:
'     The example is running on thread 1
'     The current culture is en-US
'     Changed the current culture to fr-FR.
'     
'     Executing the delegate synchronously:
'     Formatting using the fr-FR culture on thread 1.
'     163 025 412,32 €   18 905 365,59 €
'     
'     Executing a task asynchronously:
'     Formatting using the en-US culture on thread 3.
'     $163,025,412.32   $18,905,365.59
'     
'     Executing a task synchronously:
'     Formatting using the fr-FR culture on thread 1.
'     163 025 412,32 €   18 905 365,59 €

.NET Framework 4.5.NET Framework 4.5.NET Framework 4.6.NET Framework 4.6이전에 .NET Framework 버전을 대상으로 하는 앱의 경우 DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 속성을 사용 하 여 호출 스레드의 문화권이 스레드 풀에서 실행 되는 비동기 작업에서 사용 되도록 할 수 있습니다. 임계값.For apps that target versions of the .NET Framework from the .NET Framework 4.5.NET Framework 4.5 and later but prior to the .NET Framework 4.6.NET Framework 4.6, you can use the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to ensure that the culture of the calling thread is used in asynchronous tasks that execute on thread pool threads. 다음 예제는 DefaultThreadCurrentCulture 속성을 사용 하 여 스레드 풀 스레드의 문화권이 주 앱 스레드와 동일한 지 확인 한다는 점을 제외 하 고 이전 예제와 동일 합니다.The following example is identical to the previous example, except that it uses the DefaultThreadCurrentCulture property to ensure that thread pool threads have the same culture as the main app thread.

using System;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
       decimal[] values = { 163025412.32m, 18905365.59m };
       string formatString = "C2";
       Func<String> formatDelegate = () => { string output = String.Format("Formatting using the {0} culture on thread {1}.\n",
                                                                           CultureInfo.CurrentCulture.Name,
                                                                           Thread.CurrentThread.ManagedThreadId);
                                             foreach (var value in values)
                                                output += String.Format("{0}   ", value.ToString(formatString));
                                                   
                                             output += Environment.NewLine;
                                             return output;
                                           };
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId);
       // Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name);
       if (CultureInfo.CurrentCulture.Name == "fr-FR")
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
       else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

       Console.WriteLine("Changed the current culture to {0}.\n",
                         CultureInfo.CurrentCulture.Name);
       CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentCulture;
       
       // Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:");
       Console.WriteLine(formatDelegate());
       
       // Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:"); 
       var t1 = Task.Run(formatDelegate);
       Console.WriteLine(t1.Result);
       
       Console.WriteLine("Executing a task synchronously:");
       var t2 = new Task<String>(formatDelegate); 
       t2.RunSynchronously();
       Console.WriteLine(t2.Result);
   }
}
// The example displays the following output:
//     The example is running on thread 1
//     The current culture is en-US
//     Changed the current culture to fr-FR.
//     
//     Executing the delegate synchronously:
//     Formatting using the fr-FR culture on thread 1.
//     163 025 412,32 €   18 905 365,59 €
//     
//     Executing a task asynchronously:
//     Formatting using the fr-FR culture on thread 3.
//     163 025 412,32 €   18 905 365,59 €
//     
//     Executing a task synchronously:
//     Formatting using the fr-FR culture on thread 1.
//     163 025 412,32 €   18 905 365,59 €
Imports System.Globalization
Imports System.Runtime.Versioning
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
       Dim values() As Decimal = { 163025412.32d, 18905365.59d }
       Dim formatString As String = "C2"
       Dim formatDelegate As Func(Of String) = Function()
                                                  Dim output As String = String.Format("Formatting using the {0} culture on thread {1}.",
                                                                                       CultureInfo.CurrentCulture.Name,
                                                                                       Thread.CurrentThread.ManagedThreadId)
                                                  output += Environment.NewLine
                                                  For Each value In values
                                                     output += String.Format("{0}   ", value.ToString(formatString))
                                                  Next 
                                                  output += Environment.NewLine
                                                  Return output
                                               End Function
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId)
       ' Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name)
       If CultureInfo.CurrentCulture.Name = "fr-FR" Then
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
       Else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
       End If
       Console.WriteLine("Changed the current culture to {0}.",
                         CultureInfo.CurrentCulture.Name)
       CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentCulture
       Console.WriteLine()                  
       
       ' Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:")
       Console.WriteLine(formatDelegate())
       
       ' Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:") 
       Dim t1 = Task.Run(formatDelegate)
       Console.WriteLine(t1.Result)
       
       Console.WriteLine("Executing a task synchronously:")
       Dim t2 = New Task(Of String)(formatDelegate) 
       t2.RunSynchronously()
       Console.WriteLine(t2.Result)
   End Sub
End Module
' The example displays the following output:
'       The example is running on thread 1
'       The current culture is en-US
'       Changed the current culture to fr-FR.
'       
'       Executing the delegate synchronously:
'       Formatting using the fr-FR culture on thread 1.
'       163 025 412,32 €   18 905 365,59 €
'       
'       Executing a task asynchronously:
'       Formatting using the fr-FR culture on thread 3.
'       163 025 412,32 €   18 905 365,59 €
'       
'       Executing a task synchronously:
'       Formatting using the fr-FR culture on thread 1.
'       163 025 412,32 €   18 905 365,59 €

DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 앱 별 도메인 속성은 모든 스레드는 특정 애플리케이션 도메인에서 문화권을 명시적으로 할당에 대 한 기본 문화권 설정 즉, 합니다.DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture are per-app domain properties; that is, they establish a default culture for all threads not explicitly assigned a culture in a specific application domain. 그러나 .NET Framework 4.6.NET Framework 4.6 이상을 대상으로 하는 앱의 경우 작업이 응용 프로그램 도메인 경계를 넘는 경우에도 호출 스레드의 문화권이 비동기 작업 컨텍스트의 일부가 됩니다.However, for apps that target the .NET Framework 4.6.NET Framework 4.6 or later, the culture of the calling thread remains part of an asynchronous task's context even if the task crosses app domain boundaries.

다음 예제는 호출 스레드의 문화권은 작업이 실행 되는 메서드를 애플리케이션 도메인 경계를 넘는 경우에 작업 기반 비동기 작업의 현재 문화권을 유지 하는 것입니다.The following example shows that the calling thread's culture remains the current culture of a task-based asynchronous operation even if the method that the task is executing crosses application domain boundaries. 1과 1000 사이의 임의 배정밀도 부동 소수점 숫자를 통화 값으로 반환 하는 단일 메서드 GetFormattedNumber를 사용 하 여 DataRetriever클래스를 정의 합니다.It defines a class, DataRetriever, with a single method, GetFormattedNumber, that returns a random double-precision floating-point number between 1 and 1,000 formatted as a currency value. DataRetriever 인스턴스를 인스턴스화하고 해당 GetFormattedNumber 메서드를 호출 하는 첫 번째 태스크가 실행 됩니다.A first task is run that simply instantiates a DataRetriever instance and calls its GetFormattedNumber method. 현재 애플리케이션 도메인을 보고, 새 애플리케이션 도메인을 만듭니다, 인스턴스화하는 두 번째 작업을 DataRetriever 새 애플리케이션 도메인 및 호출의 인스턴스에 해당 GetFormattedNumber 메서드.A second task reports its current application domain, creates a new application domain, instantiates a DataRetriever instance in the new application domain, and calls its GetFormattedNumber method. 예제의 출력에서 볼 수 있듯이 현재 문화권에 동일 하 게 호출 스레드, 첫 번째 작업에서는 및 두 번째 태스크는 모두 기본 애플리케이션 도메인 및 두 번째 애플리케이션 도메인에서 실행 될 때입니다.As the output from the example shows, the current culture has remained the same in the calling thread, the first task, and the second task both when it was executing in the main application domain and the second application domain.

using System;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;

[assembly:TargetFramework(".NETFramework,Version=v4.6")]

public class Example
{
   public static void Main()
   {
       string formatString = "C2";
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId);
       // Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name);
       if (CultureInfo.CurrentCulture.Name == "fr-FR")
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
       else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

       Console.WriteLine("Changed the current culture to {0}.\n",
                         CultureInfo.CurrentCulture.Name);
       
       // Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously in the main appdomain:"); 
       var t1 = Task.Run(() => { DataRetriever d = new DataRetriever();
                                 return d.GetFormattedNumber(formatString);
                               });
       Console.WriteLine(t1.Result);
       Console.WriteLine(); 
       
       Console.WriteLine("Executing a task synchronously in two appdomains:");
       var t2 = Task.Run(() => { Console.WriteLine("Thread {0} is running in app domain '{1}'", 
                                                   Thread.CurrentThread.ManagedThreadId, 
                                                   AppDomain.CurrentDomain.FriendlyName);
                                 AppDomain domain = AppDomain.CreateDomain("Domain2");
                                 DataRetriever d = (DataRetriever) domain.CreateInstanceAndUnwrap(typeof(Example).Assembly.FullName,
                                                   "DataRetriever");
                                 return d.GetFormattedNumber(formatString); 
                               }); 
       Console.WriteLine(t2.Result);
   }
}

public class DataRetriever : MarshalByRefObject
{
   public string GetFormattedNumber(String format)
   {
      Thread thread = Thread.CurrentThread;
      Console.WriteLine("Current culture is {0}", thread.CurrentCulture);
      Console.WriteLine("Thread {0} is running in app domain '{1}'", 
                        thread.ManagedThreadId, 
                        AppDomain.CurrentDomain.FriendlyName);
      Random rnd = new Random();
      Double value = rnd.NextDouble() * 1000;
      return value.ToString(format);
   }
}
// The example displays output like the following:
//     The example is running on thread 1
//     The current culture is en-US
//     Changed the current culture to fr-FR.
//     
//     Executing a task asynchronously in a single appdomain:
//     Current culture is fr-FR
//     Thread 3 is running in app domain 'AsyncCulture4.exe'
//     93,48 €
//     
//     Executing a task synchronously in two appdomains:
//     Thread 4 is running in app domain 'AsyncCulture4.exe'
//     Current culture is fr-FR
//     Thread 4 is running in app domain 'Domain2'
//     288,66 €
Imports System.Globalization
Imports System.Runtime.Versioning
Imports System.Threading
Imports System.Threading.Tasks

<Assembly:TargetFramework(".NETFramework,Version=v4.6")>

Module Example
   Public Sub Main()
       Dim formatString As String = "C2"
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId)
       ' Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name)
       If CultureInfo.CurrentCulture.Name = "fr-FR" Then
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
       Else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
       End If

       Console.WriteLine("Changed the current culture to {0}.",
                         CultureInfo.CurrentCulture.Name)
       Console.WriteLine()
       
       ' Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously in the main appdomain:") 
       Dim t1 = Task.Run(Function()
                            Dim d As New DataRetriever()
                            Return d.GetFormattedNumber(formatString)
                         End Function)
       Console.WriteLine(t1.Result)
       Console.WriteLine() 
       
       Console.WriteLine("Executing a task synchronously in two appdomains:")
       Dim t2 = Task.Run(Function()
                            Console.WriteLine("Thread {0} is running in app domain '{1}'", 
                                              Thread.CurrentThread.ManagedThreadId, 
                                              AppDomain.CurrentDomain.FriendlyName)
                            Dim domain As AppDomain = AppDomain.CreateDomain("Domain2")
                            Dim d As DataRetriever = CType(domain.CreateInstanceAndUnwrap(GetType(Example).Assembly.FullName,
                                                                                          "DataRetriever"), DataRetriever)
                            Return d.GetFormattedNumber(formatString) 
                         End Function) 
       Console.WriteLine(t2.Result)
   End Sub
End Module

Public Class DataRetriever : Inherits MarshalByRefObject
   Public Function GetFormattedNumber(format As String) As String
      Dim thread As Thread = Thread.CurrentThread
      Console.WriteLine("Current culture is {0}", thread.CurrentCulture)
      Console.WriteLine("Thread {0} is running in app domain '{1}'", 
                        thread.ManagedThreadId, 
                        AppDomain.CurrentDomain.FriendlyName)
      Dim rnd As New Random()
      Dim value As Double = rnd.NextDouble() * 1000
      Return value.ToString(format)
   End Function
End Class
' The example displays output like the following:
'     The example is running on thread 1
'     The current culture is en-US
'     Changed the current culture to fr-FR.
'     
'     Executing a task asynchronously in a single appdomain:
'     Current culture is fr-FR
'     Thread 3 is running in app domain 'AsyncCulture4.exe'
'     93,48 €
'     
'     Executing a task synchronously in two appdomains:
'     Thread 4 is running in app domain 'AsyncCulture4.exe'
'     Current culture is fr-FR
'     Thread 4 is running in app domain 'Domain2'
'     288,66 €

CultureInfo 개체 serializationCultureInfo object serialization

CultureInfo 개체가 serialize 되 면 실제로 저장 된 모든가 Name 되 고 UseUserOverride됩니다.When a CultureInfo object is serialized, all that is actually stored is Name and UseUserOverride. Name 동일한 의미를 갖는 환경 에서만 serialize 되지 않습니다.It is successfully de-serialized only in an environment where that Name has the same meaning. 다음 세 가지 예제에서는 이러한 경우가 항상 발생 하지 않는 이유를 보여 줍니다.The following three examples show why this is not always the case:

  • CultureTypes 속성 값을 CultureTypes.InstalledWin32Cultures하 고 해당 문화권이 특정 버전의 Windows 운영 체제에서 처음 도입 된 경우 이전 버전의 Windows에서 deserialize 할 수 없습니다.If the CultureTypes property value is CultureTypes.InstalledWin32Cultures, and if that culture was first introduced in a particular version of the Windows operating system, it is not possible to deserialize it on an earlier version of Windows. 예를 들어, Windows 10에서 문화권이 도입 된 경우 Windows 8에서 deserialize 할 수 없습니다.For example, if a culture was introduced in Windows 10, it cannot be deserialized on Windows 8.

  • CultureTypes 값이 CultureTypes.UserCustomCulture되 고 deserialize 된 컴퓨터에서이 사용자 지정 문화권을 설치 하지 않은 경우 deserialize 할 수 없습니다.If the CultureTypes value is CultureTypes.UserCustomCulture, and the computer on which it is de-serialized does not have this user custom culture installed, it is not possible to deserialize it.

  • CultureTypes 값이 CultureTypes.ReplacementCultures되 고 deserialize 되는 컴퓨터에이 대체 문화권이 없는 경우 동일한 이름으로 serialize 되지 않지만 동일한 특성을 모두 사용할 수는 없습니다.If the CultureTypes value is CultureTypes.ReplacementCultures, and the computer on which it is de-serialized does not have this replacement culture, it de-serializes to the same name, but not all of the same characteristics. 예를 들어 en-us가 컴퓨터 A의 대체 문화권이 고 컴퓨터 B에는 없는 경우,이 문화권을 참조 하는 CultureInfo 개체가 A 컴퓨터에서 serialize 되 고 컴퓨터 B에서 역직렬화 되는 경우 문화권의 사용자 지정 특성은 전송 되지 않습니다.For example, if en-US is a replacement culture on computer A, but not on computer B, and if a CultureInfo object referring to this culture is serialized on computer A and de-serialized on computer B, then none of the custom characteristics of the culture are transmitted. 문화권이 성공적으로 deserialize 되지만 의미가 다릅니다.The culture deserializes successfully, but with a different meaning.

제어판 재정의Control Panel overrides

사용자는 제어판의 국가 및 언어 옵션을 통해 Windows의 현재 문화권과 연결 된 값 중 일부를 재정의 하도록 선택할 수 있습니다.The user might choose to override some of the values associated with the current culture of Windows through the regional and language options portion of Control Panel. 예를 들어 사용자가 날짜를 다른 형식으로 표시 하거나 문화권의 기본값 이외의 다른 통화를 사용 하도록 선택할 수 있습니다.For example, the user might choose to display the date in a different format or to use a currency other than the default for the culture. 일반적으로 애플리케이션 사용자 재정의 적용 해야 합니다.In general, your applications should honor these user overrides.

경우 UseUserOverridetrue 지정된 된 문화권의 Windows에서 현재 문화권과 일치는 CultureInfo 의 속성에 대 한 사용자 설정을 포함 하는 재정의 사용 합니다 DateTimeFormatInfo 에서 반환한 인스턴스를 DateTimeFormat 속성 속성과 합니다 NumberFormatInfo 에서 반환한 인스턴스를 NumberFormat 속성입니다.If UseUserOverride is true and the specified culture matches the current culture of Windows, the CultureInfo uses those overrides, including user settings for the properties of the DateTimeFormatInfo instance returned by the DateTimeFormat property, and the properties of the NumberFormatInfo instance returned by the NumberFormat property. 사용자 설정이 CultureInfo연결 된 문화권과 호환 되지 않는 경우, 예를 들어 선택한 달력이 OptionalCalendars중 하나가 아닌 경우 메서드 및 속성 값의 결과는 정의 되지 않습니다.If the user settings are incompatible with the culture associated with the CultureInfo, for example, if the selected calendar is not one of the OptionalCalendars, the results of the methods and the values of the properties are undefined.

대체 정렬 순서Alternate sort orders

일부 문화권에서는 두 개 이상의 정렬 순서를 지원 합니다.Some cultures support more than one sort order. 예:For example:

  • 스페인어 (스페인) 문화권에는 기본 국제 정렬 순서와 기존의 정렬 순서 라는 두 개의 정렬 순서가 있습니다.The Spanish (Spain) culture has two sort orders: the default international sort order, and the traditional sort order. Es 문화권 이름을 사용 하 여 CultureInfo 개체를 인스턴스화하면 국제 정렬 순서가 사용 됩니다.When you instantiate a CultureInfo object with the es-ES culture name, the international sort order is used. Tradnl 문화권 이름을 사용 하 여 CultureInfo 개체를 인스턴스화하면 기존 정렬 순서가 사용 됩니다.When you instantiate a CultureInfo object with the es-ES-tradnl culture name, the traditional sort order is used.

  • Zh-cn (중국어 (간체, PRC)) 문화권은 발음 (기본값) 및 스트로크 개수로 두 가지 정렬 순서를 지원 합니다.The zh-CN (Chinese (Simplified, PRC)) culture supports two sort orders: by pronunciation (the default) and by stroke count. Zh-cn 문화권 이름을 사용 하 여 CultureInfo 개체를 인스턴스화하면 기본 정렬 순서가 사용 됩니다.When you instantiate a CultureInfo object with the zh-CN culture name, the default sort order is used. 0x00020804의 로컬 식별자를 사용 하 여 CultureInfo 개체를 인스턴스화하면 문자열이 스트로크 수를 기준으로 정렬 됩니다.When you instantiate a CultureInfo object with a local identifier of 0x00020804, strings are sorted by stroke count.

다음 표에서는 대체 정렬 순서를 지 원하는 문화권과 기본 및 대체 정렬 순서에 대 한 식별자를 보여 줍니다.The following table lists the cultures that support alternate sort orders and the identifiers for the default and alternate sort orders.

문화권 이름Culture name cultureCulture 기본 정렬 이름 및 식별자Default sort name and identifier 대체 정렬 이름 및 식별자Alternate sort name and identifier
es-ESes-ES 스페인어(스페인)Spanish (Spain) 언어 0x00000C0AInternational: 0x00000C0A 종래의 0x0000040ATraditional: 0x0000040A
zh-TWzh-TW 중국어 (대만)Chinese (Taiwan) 스트로크 수: 0x00000404Stroke Count: 0x00000404 발음 0x00030404Bopomofo: 0x00030404
zh-CNzh-CN 중국어(간체)Chinese (PRC) 성 0x00000804Pronunciation: 0x00000804 스트로크 수: 0x00020804Stroke Count: 0x00020804
zh-HKzh-HK 중국어(홍콩 특별 행정구)Chinese (Hong Kong SAR) 스트로크 수: 0x00000c04Stroke Count: 0x00000c04 스트로크 수: 0x00020c04Stroke Count: 0x00020c04
zh-SGzh-SG 중국어 (싱가포르)Chinese (Singapore) 성 0x00001004Pronunciation: 0x00001004 스트로크 수: 0x00021004Stroke Count: 0x00021004
zh-cn-MOzh-MO 중국어 (마카오 특별 행정구)Chinese (Macao SAR) 성 0x00001404Pronunciation: 0x00001404 스트로크 수: 0x00021404Stroke Count: 0x00021404
ja-JPja-JP 일본어 (일본)Japanese (Japan) 기본값: 0x00000411Default: 0x00000411 유니코드: 0x00010411Unicode: 0x00010411
ko-KRko-KR 한국어 (대한민국)Korean (Korea) 기본값: 0x00000412Default: 0x00000412 한국어 Xwansung-유니코드: 0x00010412Korean Xwansung - Unicode: 0x00010412
de-DEde-DE 독일어 (독일)German (Germany) 사전순 0x00000407Dictionary: 0x00000407 전화 번호부 정렬 DIN: 0x00010407Phone Book Sort DIN: 0x00010407
hu-hu-HU-HUhu-HU 헝가리어(헝가리)Hungarian (Hungary) 기본값: 0x0000040eDefault: 0x0000040e 기술 정렬: 0x0001040eTechnical Sort: 0x0001040e
카-GEka-GE 그루지야어 (그루지야)Georgian (Georgia) 종래의 0x00000437Traditional: 0x00000437 최신 정렬: 0x00010437Modern Sort: 0x00010437

현재 culture 및 UWP 앱The current culture and UWP apps

UWP (유니버설 Windows 플랫폼) 앱에서 CurrentCultureCurrentUICulture 속성은 .NET Framework 및 .NET Core 앱에 있는 것 처럼 읽기/쓰기입니다.In Universal Windows Platform (UWP) apps, the CurrentCulture and CurrentUICulture properties are read-write, just as they are in .NET Framework and .NET Core apps. 그러나 UWP 앱은 단일 문화권을 인식 합니다.However, UWP apps recognize a single culture. CurrentCulture 하 고 CurrentUICulture 속성 map에서 첫 번째 값을 Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages 컬렉션.The CurrentCulture and CurrentUICulture properties map to the first value in the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages collection.

.NET Framework 및 .NET Core 앱에서 현재 문화권은 스레드별 설정 이며 CurrentCultureCurrentUICulture 속성은 현재 스레드의 문화권 및 UI 문화권만 반영 합니다.In .NET Framework and .NET Core apps, the current culture is a per-thread setting, and the CurrentCulture and CurrentUICulture properties reflect the culture and UI culture of the current thread only. UWP 앱에서 현재 문화권은 전역 설정 인 Windows. c o d e. c o n. c o n.In UWP apps, the current culture maps to the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages collection, which is a global setting. CurrentCulture 또는 CurrentUICulture 속성을 설정 하면 전체 앱의 문화권이 변경 됩니다. culture는 스레드 단위로 설정할 수 없습니다.Setting the CurrentCulture or CurrentUICulture property changes the culture of the entire app; culture cannot be set on a per-thread basis.

생성자

CultureInfo(Int32)

문화권 식별자별로 지정된 문화권을 기반으로 하는 CultureInfo 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the CultureInfo class based on the culture specified by the culture identifier.

CultureInfo(Int32, Boolean)

사용자가 시스템에서 선택한 문화권 설정을 사용할지 여부를 지정하는 부울과 문화권 식별자별로 지정된 문화권을 기반으로 하는 CultureInfo 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the CultureInfo class based on the culture specified by the culture identifier and on the Boolean that specifies whether to use the user-selected culture settings from the system.

CultureInfo(String)

이름에 지정된 문화권을 기반으로 CultureInfo 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the CultureInfo class based on the culture specified by name.

CultureInfo(String, Boolean)

사용자가 시스템에서 선택한 문화권 설정을 사용할지 여부를 지정하는 부울과 이름별로 지정된 문화권을 기반으로 하는 CultureInfo 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the CultureInfo class based on the culture specified by name and on the Boolean that specifies whether to use the user-selected culture settings from the system.

속성

Calendar

문화권에서 사용하는 기본 달력을 가져옵니다.Gets the default calendar used by the culture.

CompareInfo

문화권에 대한 문자열을 비교하는 방법을 정의하는 CompareInfo를 가져옵니다.Gets the CompareInfo that defines how to compare strings for the culture.

CultureTypes

현재 CultureInfo 개체와 관련된 문화권 형식을 가져옵니다.Gets the culture types that pertain to the current CultureInfo object.

CurrentCulture

현재 스레드에서 사용하는 문화권을 나타내는 CultureInfo 개체를 가져오거나 설정합니다.Gets or sets the CultureInfo object that represents the culture used by the current thread.

CurrentUICulture

리소스 관리자가 런타임에 문화권 관련 리소스를 찾기 위해 사용하는 현재 사용자 인터페이스를 나타내는 CultureInfo 개체를 가져오거나 설정합니다.Gets or sets the CultureInfo object that represents the current user interface culture used by the Resource Manager to look up culture-specific resources at run time.

DateTimeFormat

날짜와 시간 표시를 위한 문화권 형식을 정의하는 DateTimeFormatInfo를 가져오거나 설정합니다.Gets or sets a DateTimeFormatInfo that defines the culturally appropriate format of displaying dates and times.

DefaultThreadCurrentCulture

현재 애플리케이션 도메인의 스레드에 대한 기본 문화권을 가져오거나 설정합니다.Gets or sets the default culture for threads in the current application domain.

DefaultThreadCurrentUICulture

현재 애플리케이션 도메인의 스레드에 대한 기본 UI 문화권을 가져오거나 설정합니다.Gets or sets the default UI culture for threads in the current application domain.

DisplayName

전체 지역화된 문화 이름을 가져옵니다.Gets the full localized culture name.

EnglishName

문화권 이름을 languagefullcountry/regionfull 형식으로 가져옵니다.Gets the culture name in the format languagefull [country/regionfull] in English.

IetfLanguageTag

더 이상 사용되지 않습니다.Deprecated. RFC 4646 표준 식별 언어를 가져옵니다.Gets the RFC 4646 standard identification for a language.

InstalledUICulture

운영 체제에 설치된 문화권을 나타내는 CultureInfo를 가져옵니다.Gets the CultureInfo that represents the culture installed with the operating system.

InvariantCulture

문화권 독립(고정)적인 CultureInfo 개체를 가져옵니다.Gets the CultureInfo object that is culture-independent (invariant).

IsNeutralCulture

현재 CultureInfo가 중립 문화권을 표시하는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the current CultureInfo represents a neutral culture.

IsReadOnly

현재 CultureInfo가 읽기 전용인지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the current CultureInfo is read-only.

KeyboardLayoutId

활성 입력 로캘 식별자를 가져옵니다.Gets the active input locale identifier.

LCID

현재 CultureInfo에 대한 문화권 식별자를 가져옵니다.Gets the culture identifier for the current CultureInfo.

Name

languagecode2-country/regioncode2 형식의 문화권 이름을 가져옵니다.Gets the culture name in the format languagecode2-country/regioncode2.

NativeName

문화권에서 표시하도록 설정된 문화권 이름(언어, 국가/지역 및 선택적 스크립트로 구성됨)을 가져옵니다.Gets the culture name, consisting of the language, the country/region, and the optional script, that the culture is set to display.

NumberFormat

숫자, 통화 및 백분율 표시를 위한 문화권 형식을 정의하는 NumberFormatInfo를 가져오거나 설정합니다.Gets or sets a NumberFormatInfo that defines the culturally appropriate format of displaying numbers, currency, and percentage.

OptionalCalendars

문화권에서 사용할 수 있는 달력 목록을 가져옵니다.Gets the list of calendars that can be used by the culture.

Parent

현재 CultureInfo의 부모 문화권을 나타내는 CultureInfo를 가져옵니다.Gets the CultureInfo that represents the parent culture of the current CultureInfo.

TextInfo

문화권과 관련된 쓰기 시스템을 정의하는 TextInfo를 가져옵니다.Gets the TextInfo that defines the writing system associated with the culture.

ThreeLetterISOLanguageName

현재 CultureInfo 언어를 나타내는 세 문자로 된 ISO 639-2 코드를 가져옵니다.Gets the ISO 639-2 three-letter code for the language of the current CultureInfo.

ThreeLetterWindowsLanguageName

Windows API에 정의된 해당 언어를 나타내는 세 문자로 된 코드를 가져옵니다.Gets the three-letter code for the language as defined in the Windows API.

TwoLetterISOLanguageName

현재 CultureInfo 언어를 나타내는 두 문자로 된 ISO 639-1 코드를 가져옵니다.Gets the ISO 639-1 two-letter code for the language of the current CultureInfo.

UseUserOverride

현재 CultureInfo 개체에서 사용자가 선택한 문화권 설정을 사용하는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the current CultureInfo object uses the user-selected culture settings.

메서드

ClearCachedData()

캐시된 문화권 관련 정보를 새로 고칩니다.Refreshes cached culture-related information.

Clone()

현재 CultureInfo의 복사본을 만듭니다.Creates a copy of the current CultureInfo.

CreateSpecificCulture(String)

지정된 이름과 관련된 특정 문화권을 나타내는 CultureInfo을(를) 만듭니다.Creates a CultureInfo that represents the specific culture that is associated with the specified name.

Equals(Object)

지정된 개체가 현재 CultureInfo와 같은 문화권인지 여부를 확인합니다.Determines whether the specified object is the same culture as the current CultureInfo.

GetConsoleFallbackUICulture()

기본 그래픽 사용자 인터페이스 문화권이 적합하지 않은 경우 콘솔 애플리케이션에 적합한 대체 사용자 인터페이스 문화권을 가져옵니다.Gets an alternate user interface culture suitable for console applications when the default graphic user interface culture is unsuitable.

GetCultureInfo(Int32)

지정된 문화권 식별자를 사용하여 문화권의 캐시된 읽기 전용 인스턴스를 검색합니다.Retrieves a cached, read-only instance of a culture by using the specified culture identifier.

GetCultureInfo(String)

지정된 문화권 이름을 사용하여 문화권의 캐시된 읽기 전용 인스턴스를 검색합니다.Retrieves a cached, read-only instance of a culture using the specified culture name.

GetCultureInfo(String, String)

문화권의 캐시된 읽기 전용 인스턴스를 검색합니다.Retrieves a cached, read-only instance of a culture. 매개 변수는 다른 문화권이 지정하는 TextInfoCompareInfo 개체를 사용하여 초기화되는 문화권을 지정합니다.Parameters specify a culture that is initialized with the TextInfo and CompareInfo objects specified by another culture.

GetCultureInfoByIetfLanguageTag(String)

더 이상 사용되지 않습니다.Deprecated. 지정된 RFC 4646 언어 태그에 의해 언어적 특성이 식별되는 읽기 전용 CultureInfo 개체를 검색합니다.Retrieves a read-only CultureInfo object having linguistic characteristics that are identified by the specified RFC 4646 language tag.

GetCultures(CultureTypes)

지정된 CultureTypes 매개 변수에 의해 필터링된 지원 문화권 목록을 가져옵니다.Gets the list of supported cultures filtered by the specified CultureTypes parameter.

GetFormat(Type)

지정된 형식의 서식을 지정하는 방법을 정의하는 개체를 가져옵니다.Gets an object that defines how to format the specified type.

GetHashCode()

해시 알고리즘과 해시 테이블 같은 데이터 구조에 적합한 현재 CultureInfo에 대한 해시 함수의 역할을 합니다.Serves as a hash function for the current CultureInfo, suitable for hashing algorithms and data structures, such as a hash table.

GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ReadOnly(CultureInfo)

지정된 CultureInfo 개체의 읽기 전용 래퍼를 반환합니다.Returns a read-only wrapper around the specified CultureInfo object.

ToString()

languagecode2-country/regioncode2 형식으로 현재 CultureInfo의 이름을 포함하는 문자열을 반환합니다.Returns a string containing the name of the current CultureInfo in the format languagecode2-country/regioncode2.

적용 대상

추가 정보