CultureInfo CultureInfo CultureInfo CultureInfo Class

Definition

Stellt Informationen über eine bestimmte Kultur bereit (die bei der nicht verwalteten Codeentwicklung als Gebietsschema bezeichnet wird).Provides information about a specific culture (called a locale for unmanaged code development). Zu diesen Informationen gehören der Name der Kultur, das Schriftsystem, der verwendete Kalender sowie die Sortierreihenfolge von Zeichenfolgen und die Formatierung für Datumsangaben und Zahlen.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
Vererbung
CultureInfoCultureInfoCultureInfoCultureInfo
Attribute
Implementiert

Beispiele

Im folgenden Beispiel wird gezeigt, wie ein CultureInfo -Objekt für Spanisch (Spanien) mit der internationalen Sortierung und CultureInfo einem anderen Objekt mit der herkömmlichen Sortierung erstellt wird.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

Hinweise

Die CultureInfo -Klasse stellt kulturspezifische Informationen bereit, z. b. Sprache, unter Sprache, Land/Region, Kalender und Konventionen, die einer bestimmten Kultur zugeordnet sind.The CultureInfo class provides culture-specific information, such as the language, sublanguage, country/region, calendar, and conventions associated with a particular culture. Diese Klasse DateTimeFormatInfoermöglicht auch den Zugriff auf kulturspezifische Instanzen der Objekte, NumberFormatInfo, CompareInfound. TextInfoThis class also provides access to culture-specific instances of the DateTimeFormatInfo, NumberFormatInfo, CompareInfo, and TextInfo objects. Diese Objekte enthalten die Informationen, die für Kultur abhängige Vorgänge erforderlich sind, wie z. b. die Groß-/Kleinschreibung, das Formatieren von Datumsangaben und ZiffernThese objects contain the information required for culture-specific operations, such as casing, formatting dates and numbers, and comparing strings. Die CultureInfo -Klasse wird entweder direkt oder indirekt von Klassen verwendet, die kulturspezifische Daten formatieren, analysieren oder bearbeiten, Stringwie z. DateTimeb DateTimeOffset.,, und die numerischen Typen.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 diesem AbschnittIn this section:

Kultur Namen und Bezeichner Culture names and identifiers
Invariante, neutrale und spezifische Kulturen Invariant, neutral, and specific cultures
Benutzerdefinierte Kulturen Custom cultures
Dynamische Kultur Daten Dynamic culture data
CultureInfo-und Kultur Daten Die aktuelle Kultur und die aktuelle Benutzeroberflächen Kultur CultureInfo and cultural data The current culture and current UI culture
Alle Kulturen erhalten Getting all cultures
Kultur und Threads Culture and threads
Kultur-und Anwendungs Domänen Culture and application domains
Kultur-und aufgabenbasierte asynchrone Vorgänge Culture and task-based asynchronous operations
CultureInfo-Objektserialisierung CultureInfo object serialization
Außer Kraft setzungen der Systemsteuerung Control Panel overrides
Alternative Sortierreihenfolgen Alternate sort orders
Culture-und Windows-appsCulture and Windows apps

Kultur Namen und BezeichnerCulture names and identifiers

Die CultureInfo -Klasse gibt einen eindeutigen Namen für jede Kultur basierend auf RFC 4646 an.The CultureInfo class specifies a unique name for each culture, based on RFC 4646. Der Name ist eine Kombination aus einem ISO 639 2-Buchstaben in Kleinbuchstaben, der einer Sprache zugeordnet ist, und einem ISO 3166 2-Buchstaben in Großbuchstaben, der einem Land oder einer Region zugeordnet ist.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. Außerdem werden für apps, die auf .NET Framework 4.NET Framework 4 oder höher ausgerichtet sind und unter Windows 10 oder höher ausgeführt werden, Kultur Namen unterstützt, die gültigen bcp-47-sprach Tags entsprechen.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.

Hinweis

Wenn ein Kultur Name an einen Klassenkonstruktor oder eine Methode, z CreateSpecificCulture . b. oder CultureInfo, übergeben wird, ist die Groß-/Kleinschreibung nicht signifikant.When a culture name is passed to a class constructor or a method such as CreateSpecificCulture or CultureInfo, its case is not significant.

Das Format des Kultur namens basierend auf RFC 4646 lautet languagecode2>-Country/regioncode2, wobei languagecode2 der aus zwei Buchstaben bestehende Sprachcode und Country/regioncode2 der aus zwei Buchstaben bestehende Code für die unter Kultur ist.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. Beispiele hierfür sind ja-JP für Japanisch (Japan) und en-US für Englisch (USA).Examples include ja-JP for Japanese (Japan) and en-US for English (United States). In Fällen, in denen ein aus zwei Buchstaben bestehender Sprachcode nicht verfügbar ist, wird ein aus der ISO 639-2 abgeleiteter aus drei Buchstaben bestehender Code verwendet.In cases where a two-letter language code is not available, a three-letter code derived from ISO 639-2 is used.

Beachten Sie, dass einige Kultur Namen auch ein ISO 15924-Skript angeben.Note that some culture names also specify an ISO 15924 script. Beispielsweise gibt Cyrl das kyrillische Skript an, und der Latn gibt das lateinische Skript an.For example, Cyrl specifies the Cyrillic script and Latn specifies the Latin script. Ein Kultur Name, der ein Skript enthält, verwendet das Muster languagecode2-Scripttag-Country/regioncode2.A culture name that includes a script uses the pattern languagecode2-scripttag-country/regioncode2. Ein Beispiel für diese Art von Kultur Name ist "UZ-Cyrl-UZ" für Uzbek (Kyrillisch, Usbekistan).An example of this type of culture name is uz-Cyrl-UZ for Uzbek (Cyrillic, Uzbekistan). Bei Windows-Betriebssystemen vor Windows Vista wird für einen Kultur Namen, der ein Skript enthält, das Muster languagecode2-Country/regioncode2-Scripttagverwendet, z. b. "UZ-UZ-Cyrl für Uzbek" (Cyrillic, Usbekistan).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).

Eine neutrale Kultur wird nur durch den aus zwei Buchstaben bestehenden Code für Kleinbuchstaben angegeben.A neutral culture is specified by only the two-letter lowercase language code. Beispielsweise gibt fr die neutrale Kultur für Französisch an, und de gibt die neutrale Kultur für Deutsch an.For example, fr specifies the neutral culture for French, and de specifies the neutral culture for German.

Hinweis

Es gibt zwei Kultur Namen, die dieser Regel widersprechen.There are two culture names that contradict this rule. Die Kulturen Chinesisch (vereinfacht) mit dem Namen zh-Hans und Chinesisch (traditionell) mit dem Namen zh-Hant sind neutrale Kulturen.The cultures Chinese (Simplified), named zh-Hans, and Chinese (Traditional), named zh-Hant, are neutral cultures. Die Kultur Namen stellen den aktuellen Standard dar und sollten verwendet werden, es sei denn, Sie haben einen Grund für die Verwendung der älteren Namen zh-CHS und zh-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.

Ein Kultur Bezeichner ist eine standardmäßige internationale numerische Abkürzung und verfügt über die erforderlichen Komponenten, um eine der installierten Kulturen eindeutig identifizieren zu können.A culture identifier is a standard international numeric abbreviation and has the components necessary to uniquely identify one of the installed cultures. Die Anwendung kann vordefinierte Kultur Bezeichner verwenden oder benutzerdefinierte Bezeichner definieren.Your application can use predefined culture identifiers or define custom identifiers.

Bestimmte vordefinierte Kultur Namen und Bezeichner werden von diesem und anderen Klassen im System.Globalization -Namespace verwendet.Certain predefined culture names and identifiers are used by this and other classes in the System.Globalization namespace. Ausführliche Informationen zur Kultur für Windows-Systeme finden Sie in der Spalte sprach Kennzeichen in der Liste der von Windows unterstützten Sprachen/Regions Namen.For detailed culture information for Windows systems, see the Language tag column in the list of language/region names supported by Windows. Kulturnamen befolgen den von BCP 47 definierten Standard.Culture names follow the standard defined by BCP 47.

Beachten Sie, dass die Kultur Namen und-Bezeichner nur eine Teilmenge der Kulturen darstellen, die auf einem bestimmten Computer gefunden werden können.Remember that the culture names and identifiers represent only a subset of cultures that can be found on a particular computer. Die verfügbaren Kulturen können von Windows-Versionen oder Service Packs geändert werden.Windows versions or service packs can change the available cultures. Anwendungen fügen benutzerdefinierte Kulturen mithilfe CultureAndRegionInfoBuilder der-Klasse hinzu.Applications add custom cultures using the CultureAndRegionInfoBuilder class. Benutzer fügen mithilfe des Microsoft Locale Builder-Tools eigene benutzerdefinierte Kulturen hinzu.Users add their own custom cultures using the Microsoft Locale Builder tool. Microsoft Locale Builder wird mithilfe der CultureAndRegionInfoBuilder -Klasse in verwaltetem Code geschrieben.Microsoft Locale Builder is written in managed code using the CultureAndRegionInfoBuilder class.

Mehrere eindeutige Namen sind eng mit einer Kultur verknüpft, insbesondere die Namen, die den folgenden Klassenmembern zugeordnet sind:Several distinct names are closely associated with a culture, notably the names associated with the following class members:

Invariante, neutrale und spezifische KulturenInvariant, neutral, and specific cultures

Die Kulturen sind im Allgemeinen in drei Sätze gruppiert: invariante Kulturen, neutrale Kulturen und bestimmte Kulturen.The cultures are generally grouped into three sets: invariant cultures, neutral cultures, and specific cultures.

Eine invariante Kultur ist Kultur unabhängig.An invariant culture is culture-insensitive. Die Anwendung gibt die invariante Kultur anhand des Namens mit einer leeren Zeichenfolge ("") oder durch ihren Bezeichner an.Your application specifies the invariant culture by name using an empty string ("") or by its identifier. InvariantCulturedefiniert eine Instanz der invarianten Kultur.InvariantCulture defines an instance of the invariant culture. Sie ist mit der englischen Sprache verknüpft, aber nicht mit einem Land bzw. einer Region.It is associated with the English language but not with any country/region. Sie wird in nahezu jeder Methode im Globalization -Namespace verwendet, die eine Kultur erfordert.It is used in almost any method in the Globalization namespace that requires a culture.

Eine neutrale Kultur ist eine Kultur, die einer Sprache zugeordnet ist, aber nicht mit einem Land bzw. einer Region.A neutral culture is a culture that is associated with a language but not with a country/region. Eine bestimmte Kultur ist eine Kultur, die einer Sprache und einem Land/einer Region zugeordnet ist.A specific culture is a culture that is associated with a language and a country/region. Beispielsweise ist "fr" der neutrale Name für die französische Kultur, und "fr-FR" ist der Name der Kultur "Französisch (Frankreich)".For example, fr is the neutral name for the French culture, and fr-FR is the name of the specific French (France) culture. Beachten Sie, dass Chinesisch (vereinfacht) und Chinesisch (traditionell) auch als neutrale Kulturen angesehen werden.Note that Chinese (Simplified) and Chinese (Traditional) are also considered neutral cultures.

Das Erstellen einer Instanz CompareInfo einer Klasse für eine neutrale Kultur ist nicht empfehlenswert, da die darin enthaltenen Daten willkürlich sind.Creating an instance of a CompareInfo class for a neutral culture is not recommended because the data it contains is arbitrary. Um Daten anzuzeigen und zu sortieren, geben Sie die Sprache und die Region an.To display and sort data, specify both the language and region. Außerdem gibt die Name -Eigenschaft CompareInfo eines-Objekts, das für eine neutrale Kultur erstellt wird, nur das Land zurück und schließt den Bereich nicht ein.Additionally, the Name property of a CompareInfo object created for a neutral culture returns only the country and does not include the region.

Die definierten Kulturen verfügen über eine Hierarchie, in der das übergeordnete Element einer bestimmten Kultur eine neutrale Kultur ist und das übergeordnete Element einer neutralen Kultur die invariante Kultur ist.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. Die Parent -Eigenschaft enthält die neutrale Kultur, die einer bestimmten Kultur zugeordnet ist.The Parent property contains the neutral culture associated with a specific culture. Benutzerdefinierte Kulturen sollten die Parent Eigenschaft in Übereinstimmung mit diesem Muster definieren.Custom cultures should define the Parent property in conformance with this pattern.

Wenn die Ressourcen für eine bestimmte Kultur im Betriebssystem nicht verfügbar sind, werden die Ressourcen für die zugehörige neutrale Kultur verwendet.If the resources for a specific culture are not available in the operating system, the resources for the associated neutral culture are used. Wenn die Ressourcen für die neutrale Kultur nicht verfügbar sind, werden die in die Hauptassembly eingebetteten Ressourcen verwendet.If the resources for the neutral culture are not available, the resources embedded in the main assembly are used. Weitere Informationen zum Ressourcen Fall Backprozess finden Sie unter Verpacken undBereitstellen von Ressourcen.For more information on the resource fallback process, see Packaging and Deploying Resources.

Die Liste der Gebiets Schemas in der Windows-API unterscheidet sich geringfügig von der Liste der Kulturen, die vom .NET Framework unterstützt werden.The list of locales in the Windows API is slightly different from the list of cultures supported by the .NET Framework. Wenn Interoperabilität mit Windows erforderlich ist, z. b. durch den p/aufrufen-Mechanismus, sollte die Anwendung eine bestimmte Kultur verwenden, die für das Betriebssystem definiert ist.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. Die Verwendung der jeweiligen Kultur gewährleistet die Konsistenz mit dem entsprechenden Windows-Gebiets Schema, das mit einem Gebiets Schema Bezeichner identifiziert LCIDwird, der mit identisch ist.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.

Ein DateTimeFormatInfo oder ein NumberFormatInfo kann nur für die invariante Kultur oder für bestimmte Kulturen, nicht für neutrale Kulturen, erstellt werden.A DateTimeFormatInfo or a NumberFormatInfo can be created only for the invariant culture or for specific cultures, not for neutral cultures.

Wenn DateTimeFormatInfo.Calendar Thread.CurrentCulture das DateTimeFormatInfo.GetEraName DateTimeFormatInfo.GetAbbreviatedEraName ist, aberDateTimeFormatInfo.NativeCalendarNamenicht auf zh-tw festgelegt ist, geben, und eine leere Zeichenfolge ("" TaiwanCalendar ) zurück.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 ("").

Benutzerdefinierte KulturenCustom cultures

Zusätzlich zu den vordefinierten Kulturen, die vom Windows-Betriebssystem und dem .NET Framework unterstützt werden, unterstützt die .NET Framework drei Typen von benutzerdefinierten Kulturen: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:

  • Neue Kulturen, die die in Windows verfügbaren Kulturen ergänzen, oder die .NET Framework.New cultures that supplement the cultures available in Windows or the .NET Framework. Beispielsweise könnte eine Anwendung ein CultureInfo -Objekt installieren, das die Kultur fj-FJ (oder fijan (Fidschi) auf einem System darstellt.For example, an application could install a CultureInfo object that represents the fj-FJ (or Fijan (Fiji)) culture on a system.

  • Ersatzkulturen, deren Eigenschaften sich von den Eigenschaften der Standard Kulturen unterscheiden, die von Windows und der .NET Framework unterstützt werden.Replacement cultures whose properties are different from the properties of the standard cultures supported by Windows and the .NET Framework.

  • Standard Kulturen mit Benutzer Überschreitungen.Standard cultures with user overrides. Der Benutzer kann die Regions-und sprach Anwendung in der Systemsteuerung verwenden, um die Eigenschaftswerte einer vorhandenen Kultur anzupassen.The user can use the Region and Language application in Control Panel to customize an existing culture's property values.

Hinweis

Sie können die CultureAndRegionInfoBuilder -Klasse verwenden, um benutzerdefinierte Kulturen zu definieren, zu speichern und zu registrieren, die vorhandene Kulturen ergänzen oder ersetzen.You can use the CultureAndRegionInfoBuilder class to define, save, and register custom cultures that either supplement or replace existing cultures. Die CultureAndRegionInfoBuilder.Save -Methode erstellt eine LDML-Datei (Locale Data Markup Language), die zum Installieren einer benutzerdefinierten Kultur auf Zielsystemen verwendet werden kann.The CultureAndRegionInfoBuilder.Save method creates a Locale Data Markup Language (LDML) file that can be used to install a custom culture on target systems. Schritt-für-Schritt-Informationen zur Verwendung CultureAndRegionInfoBuilder der-Klasse zum Erstellen einer neuen oder Ersatz Kultur finden CultureAndRegionInfoBuilder Sie im Thema zur-Klasse.For step-by step information on using the CultureAndRegionInfoBuilder class to create a new or replacement culture, see the CultureAndRegionInfoBuilder class topic.

Da der .NET Framework benutzerdefinierte Kulturen unterstützt, sollten beim Arbeiten mit kulturspezifischen Daten folgende Punkte berücksichtigt werden:Because the .NET Framework supports custom cultures, you should consider the following when working with culture-specific data:

  • Benutzerdefinierte Kulturen können Werte aufweisen, die die Bereiche der vordefinierten Kulturen überschreiten.Custom cultures can have values that exceed the ranges of the predefined cultures. Beispielsweise weisen einige Kulturen ungewöhnlich lange Monatsnamen, unerwartete Datums-oder Uhrzeit Formate oder andere ungewöhnliche Daten auf.For example, some cultures have unusually long month names, unexpected date or time formats, or other unusual data.

  • Wenn Sie kulturspezifische Daten auf der Benutzeroberfläche anzeigen, sollten Sie die Anpassungen des Benutzers berücksichtigen. der Benutzer könnte z. b. ein 24-Stunden-Format oder ein YYYYMMDD-Datumsformat haben.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.

  • Beachten Sie, dass benutzerdefinierte Kulturen Standardwerte überschreiben.Remember that custom cultures override default values. Daher können Kultur Daten nicht als stabil betrachtet werden.Therefore, you cannot consider culture data to be stable. Ländernamen, Zahlen-und Datumsformate sowie rechtschreibweisen können sich in Zukunft ändern.Country names, number and date formats, and spellings may change in the future. Wenn Sie Kultur abhängige Daten (z. b. Datums-und Uhrzeit Zeichenfolgen) serialisieren möchten, die an die Datums-und Uhrzeit-parametrisierungsfunktionen übermittelt werden sollen, sollten Sie die invariante Kultur oder eine bestimmte verwenden.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 .

Der CultureTypes -Eigenschafts Wert von benutzerdefinierten Kulturen, die auf System.Globalization.CultureTypes einem System installiert sind, umfasst das- LCID Flag, und LOCALE_CUSTOM_UNSPECIFIED benutzerdefinierten Kulturen wird ein-Eigenschafts Wert von (0x1000 oder 4096) zugewiesen.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). Beachten Sie, dass dieser Wert ab Windows 10 auch System definierten Kulturen zugewiesen wird, die nicht über umfassende Kultur Daten verfügen.Note that, starting with Windows 10, this value is also assigned to system-defined cultures that lack complete cultural data.

CultureInfo-und Kultur DatenCultureInfo and cultural data

.Net leitet seine kulturellen Daten von einer Vielzahl von Quellen ab, je nach Implementierung, Plattform und Version:.NET derives its cultural data from a one of a variety of sources, depending on implementation, platform, and version:

  • In .NET Framework 3,5 und früheren Versionen werden Kultur Daten sowohl vom Windows-Betriebssystem als auch vom .NET Framework bereitgestellt.In .NET Framework 3.5 and earlier versions, cultural data is provided by both the Windows operating system and the .NET Framework.

  • In .NET Framework 4 und höheren Versionen werden Kultur Daten vom Windows-Betriebssystem bereitgestellt.In .NET Framework 4 and later versions, cultural data is provided by the Windows operating system.

  • In allen Versionen von .net Core, die unter Windows ausgeführt werden, werden die kulturellen Daten vom Windows-Betriebssystem bereitgestellt.In all versions of .NET Core running on Windows, cultural data is provided by the Windows operating system.

  • In allen Versionen von .net Core, die auf UNIX-Plattformen ausgeführt werden, werden Kultur Daten von der ICU-Bibliothek (International Components for Unicode)bereitgestellt.In all versions of .NET Core running on Unix platforms, cultural data is provided by the International Components for Unicode (ICU) Library. Die spezifische Version der ICU-Bibliothek hängt vom jeweiligen Betriebssystem ab.The specific version of the ICU Library depends on the individual operating system.

Aus diesem Grund ist eine Kultur, die für eine bestimmte .NET-Implementierung, Plattform oder Version verfügbar ist, möglicherweise nicht in einer anderen .NET-Implementierung, Plattform oder Version verfügbar.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.

Einige CultureInfo Objekte unterscheiden sich abhängig von der zugrunde liegenden Plattform.Some CultureInfo objects differ depending on the underlying platform. Insbesondere "zh-cn" oder Chinesisch (vereinfacht, China) und zh-tw bzw. Chinesisch (traditionell, Taiwan) sind auf Windows-Systemen verfügbare Kulturen, aber es handelt sich dabei um Alias Kulturen auf UNIX-Systemen.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" ist ein Alias für die Kultur "zh-Hans-CN", und "zh-tw" ist ein Alias für die Kultur "zh-Hant-TW"."zh-CN" is an alias for the "zh-Hans-CN" culture, and "zh-TW" is an alias for the "zh-Hant-TW" culture. Alias Kulturen werden nicht durch Aufrufe der GetCultures -Methode zurückgegeben und können unterschiedliche Eigenschaftswerte aufweisen, einschließlich unterschiedlicher Parent Kulturen, als Ihre Windows-Entsprechungen.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. Für die zh-cn-und zh-tw-Kulturen umfassen diese differendie folgenden Unterschiede:For the zh-CN and zh-TW cultures, these differenes include the following:

  • Auf Windows-Systemen ist die übergeordnete Kultur der Kultur "zh-cn" "zh-Hans", und die übergeordnete Kultur der "zh-tw"-Kultur ist "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". Die übergeordnete Kultur beider Kulturen ist "zh".The parent culture of both these cultures is "zh". Auf UNIX-Systemen sind die übergeordneten Elemente beider Kulturen "zh".On Unix systems, the parents of both cultures are "zh". Dies bedeutet, dass Sie, wenn Sie keine Kultur abhängigen Ressourcen für die Kulturen "zh-cn" oder "zh-tw" bereitstellen, aber keine Ressourcen für die neutrale Kultur "zh-Hans" oder "zh-Hant" bereitstellen, dass Ihre Anwendung die Ressourcen für die neutrale Kultur unter Windows, jedoch nicht für UNIX lädt. .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. Auf UNIX-Systemen müssen Sie die Threads CurrentUICulture explizit entweder auf "zh-Hans" oder "zh-Hant" festlegen.On Unix systems, you must explicitly set the thread's CurrentUICulture to either "zh-Hans" or "zh-Hant".

  • Auf Windows-Systemen gibt CultureInfo.Equals das Aufrufen von für eine-Instanz, die die Kultur "zh-cn" darstellt, und deren Übergabe an eine ZH- trueHans-CN-Instanz zurück.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. Auf UNIX-Systemen gibt der Methodenaufrufe falsezurück.On Unix systems, the method call returns false. Dieses Verhalten gilt auch für den Equals Aufruf von für eine ZH- CultureInfo TW-Instanz und die Übergabe einer zh-Hant-TW-Instanz.This behavior also applies to calling Equals on a "zh-TW" CultureInfo instance and passing it a "zh-Hant-Tw" instance.

Dynamische Kultur DatenDynamic culture data

Mit Ausnahme der invarianten Kultur sind Kultur Daten dynamisch.Except for the invariant culture, culture data is dynamic. Dies gilt auch für die vordefinierten Kulturen.This is true even for the predefined cultures. Beispielsweise übernehmen Länder oder Regionen neue Währungen, ändern ihre Schreibweise von Wörtern oder ändern Ihren bevorzugten Kalender, und Kultur Definitionen ändern sich, um dies zu verfolgen.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. Benutzerdefinierte Kulturen können ohne vorherige Ankündigung geändert werden, und jede bestimmte Kultur kann durch eine benutzerdefinierte Ersatz Kultur überschrieben werden.Custom cultures are subject to change without notice, and any specific culture might be overridden by a custom replacement culture. Außerdem kann ein einzelner Benutzer, wie im folgenden erläutert, die kulturellen Einstellungen überschreiben.Also, as discussed below, an individual user can override cultural preferences. Anwendungen sollten Kultur Daten immer zur Laufzeit abrufen.Applications should always obtain culture data at run time.

Achtung

Beim Speichern von Daten sollte Ihre Anwendung die invariante Kultur, ein binäres Format oder ein bestimmtes Kultur unabhängiges Format verwenden.When saving data, your application should use the invariant culture, a binary format, or a specific culture-independent format. Daten, die gemäß den aktuellen Werten gespeichert werden, die einer bestimmten Kultur zugeordnet sind, außer der invarianten Kultur, können möglicherweise nicht lesbar sein oder sich ändern, wenn sich die Kultur ändert.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.

Die aktuelle Kultur und die aktuelle Benutzeroberflächen KulturThe current culture and current UI culture

Jeder Thread in einer .NET-Anwendung verfügt über eine aktuelle Kultur und eine aktuelle Benutzeroberflächen Kultur.Every thread in a .NET application has a current culture and a current UI culture. Die aktuelle Kultur bestimmt die Formatierungs Konventionen für Datumsangaben, Uhrzeiten, Zahlen und Währungswerte, die Sortierreihenfolge von Text, die Groß-/Kleinschreibungskonventionen und die Möglichkeiten, wie Zeichen folgen verglichen werden.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. Die aktuelle Benutzeroberflächen Kultur wird zum Abrufen kulturspezifischer Ressourcen zur Laufzeit verwendet.The current UI culture is used to retrieve culture-specific resources at runtime.

Hinweis

Informationen dazu, wie die aktuelle und die aktuelle Benutzeroberflächen Kultur Thread bezogen bestimmt wird, finden Sie im Abschnitt Kultur und Threads .For information on how the current and current UI culture is determined on a per-thread basis, see the Culture and threads section. Informationen dazu, wie die aktuelle und die aktuelle Benutzeroberflächen Kultur auf Threads festgelegt wird, die in einer neuen Anwendungsdomäne ausgeführt werden, sowie auf Threads, die Anwendungs Domänen Grenzen überschreiten, finden Sie im Abschnitt Kultur-und Anwendungs Domänen .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. Informationen dazu, wie Current und Current auf Threads festgelegt werden, die aufgabenbasierte asynchrone Vorgänge ausführen, finden Sie im Abschnitt Kultur und aufgabenbasierte asynchrone Vorgänge .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.

Ausführlichere Informationen zur aktuellen Kultur finden Sie im CultureInfo.CurrentCulture Thema zur-Eigenschaft.For more detailed information on the current culture, see the CultureInfo.CurrentCulture property topic. Ausführlichere Informationen zur aktuellen Benutzeroberflächen Kultur finden Sie im CultureInfo.CurrentUICulture Thema zur-Eigenschaft.For more detailed information on the current UI culture, see the CultureInfo.CurrentUICulture property topic.

Abrufen der aktuellen und der aktuellen Benutzeroberflächen KulturenRetrieving the current and current UI cultures

Sie können ein CultureInfo -Objekt, das die aktuelle Kultur darstellt, auf zwei Arten erhalten:You can get a CultureInfo object that represents the current culture in either of two ways:

Im folgenden Beispiel werden beide Eigenschaftswerte abgerufen und verglichen, um anzuzeigen, dass Sie gleich sind, und der Name der aktuellen Kultur wird angezeigt.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

Sie können ein CultureInfo -Objekt, das die aktuelle Benutzeroberflächen Kultur darstellt, auf zwei Arten erhalten:You can get a CultureInfo object that represents the current UI culture in either of two ways:

Im folgenden Beispiel werden beide Eigenschaftswerte abgerufen und verglichen, um anzuzeigen, dass Sie gleich sind, und der Name der aktuellen Benutzeroberflächen Kultur wird angezeigt.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

Festlegen der aktuellen und der aktuellen Benutzeroberflächen KulturenSetting the current and current UI cultures

Gehen Sie folgendermaßen vor, um die Kultur und die Benutzeroberflächen Kultur eines Threads zu ändern:To change the culture and UI culture of a thread, do the following:

  1. Instanziieren Sie CultureInfo ein-Objekt, das diese Kultur darstellt CultureInfo , indem Sie einen-Klassenkonstruktor aufrufen und den Namen der Kultur übergeben.Instantiate a CultureInfo object that represents that culture by calling a CultureInfo class constructor and passing it the name of the culture. Der CultureInfo(String) -Konstruktor instanziiert CultureInfo ein-Objekt, das Benutzer Überschreibungen widerspiegelt, wenn die neue Kultur mit der aktuellen Windows-Kultur identisch ist.The CultureInfo(String) constructor instantiates a CultureInfo object that reflects user overrides if the new culture is the same as the current Windows culture. Mit CultureInfo(String, Boolean) dem-Konstruktor können Sie angeben, ob das neu instanziierte CultureInfo -Objekt Benutzer Überschreibungen widerspiegelt, wenn die neue Kultur mit der aktuellen Windows-Kultur identisch ist.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. Weisen Sie CultureInfo das-Objekt CultureInfo.CurrentCulture der CultureInfo.CurrentUICulture -Eigenschaft oder der-Eigenschaft in .net Core und .NET Framework 4,6 und höheren Versionen zu.Assign the CultureInfo object to the CultureInfo.CurrentCulture or CultureInfo.CurrentUICulture property on .NET Core and .NET Framework 4.6 and later versions. (Bei .NET Framework 4.5.2 und früheren Versionen weisen CultureInfo Thread.CurrentCulture Sie das-Objekt der-Eigenschaft oder Thread.CurrentUICulture der-Eigenschaft zu.)(On .NET Framework 4.5.2 and earlier versions, youc an assign the CultureInfo object to the Thread.CurrentCulture or Thread.CurrentUICulture property.)

Im folgenden Beispiel wird die aktuelle Kultur abgerufen.The following example retrieves the current culture. Wenn es sich um etwas anderes als die Kultur Französisch (Frankreich) handelt, wird die aktuelle Kultur in Französisch (Frankreich) geändert.If it is anything other than the French (France) culture, it changes the current culture to French (France). Andernfalls wird die aktuelle Kultur in Französisch (Luxemburg) geändert.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

Im folgenden Beispiel wird die aktuelle Kultur abgerufen.The following example retrieves the current culture. Wenn es sich um eine andere Kultur für Slowenisch (Slowenien) handelt, wird die aktuelle Kultur in Slowenisch (Slowenien) geändert.If it is anything other the Slovenian (Slovenia) culture, it changes the current culture to Slovenian (Slovenia). Andernfalls wird die aktuelle Kultur in Kroatisch (Kroatien) geändert.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

Alle Kulturen erhaltenGetting all cultures

Durch Aufrufen der GetCultures -Methode können Sie eine Array spezifische Kategorie von Kulturen oder alle Kulturen abrufen, die auf dem lokalen Computer verfügbar sind.You can retrieve an array specific categories of cultures or of all the cultures available on the local computer by calling the GetCultures method. Beispielsweise können Sie benutzerdefinierte Kulturen, bestimmte Kulturen oder neutrale Kulturen entweder allein oder in Kombination abrufen.For example, you can retrieve custom cultures, specific cultures, or neutral cultures either alone or in combination.

Im folgenden Beispiel wird die GetCultures -Methode zweimal aufgerufen, zuerst System.Globalization.CultureTypes mit dem-Enumerationsmember, um alle benutzerdefinierten Kulturen System.Globalization.CultureTypes abzurufen, und dann mit dem-Enumerationsmember, um alle Ersetzungs Kulturen abzurufen.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.

Kultur und ThreadsCulture and threads

Wenn ein neuer Anwendungs Thread gestartet wird, werden die aktuelle Kultur und die aktuelle Benutzeroberflächen Kultur von der aktuellen System Kultur und nicht von der aktuellen Thread Kultur definiert.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. Der Unterschied wird im folgenden Beispiel veranschaulicht.The following example illustrates the difference. Sie legt die aktuelle Kultur und die aktuelle Benutzeroberflächen Kultur eines Anwendungs Threads auf die Kultur Französisch (Frankreich) (fr-FR) fest.It sets the current culture and current UI culture of an application thread to the French (France) culture (fr-FR). Wenn die aktuelle Kultur bereits "fr-FR" ist, wird Sie im Beispiel auf die Kultur "Englisch (USA)" (en-US) festgelegt.If the current culture is already fr-FR, the example sets it to the English (United States) culture (en-US). Es zeigt drei Zufallszahlen als Währungswerte an und erstellt dann einen neuen Thread, der wiederum drei weitere Zufallszahlen als Währungswerte anzeigt.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. Wie die Ausgabe des Beispiels zeigt, spiegeln die vom neuen Thread angezeigten Währungswerte jedoch nicht die Formatierungs Konventionen der Kultur Französisch (Frankreich) wider, anders als bei der Ausgabe des Hauptanwendungs Threads.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

In Versionen der .NET Framework vor der .NET Framework 4.5.NET Framework 4.5wird die häufigste Methode sicherzustellen, dass der Haupt Anwendungs Thread die gleiche Kultur mit allen anderen Arbeitsthreads gemeinsam nutzt, indem entweder der Name der Anwendungs weiten Kultur oder ein CultureInfo -Objekt übergeben wird, das stellt die Anwendungs weite Kultur eines System.Threading.ParameterizedThreadStart Delegaten dar.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. Im folgenden Beispiel wird dieser Ansatz verwendet, um sicherzustellen, dass die von zwei Threads angezeigten Währungswerte die Formatierungs Konventionen der gleichen Kultur widerspiegeln.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 €

Sie können die Kultur und die UI-Kultur von Thread Pool-Threads auf ähnliche Weise festlegen, ThreadPool.QueueUserWorkItem(WaitCallback, Object) indem Sie die-Methode aufrufen.You can set the culture and UI culture of thread pool threads in a similar manner by calling the ThreadPool.QueueUserWorkItem(WaitCallback, Object) method.

Beginnend mit .NET Framework 4.5.NET Framework 4.5können Sie die Kultur und die UI-Kultur aller Threads in einer Anwendungsdomäne mehr direkt festlegen, indem Sie ein CultureInfo -Objekt, das diese Kultur darstellt, DefaultThreadCurrentUICulture den DefaultThreadCurrentCulture -und-Eigenschaften zuweisen.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. Im folgenden Beispiel werden diese Eigenschaften verwendet, um sicherzustellen, dass alle Threads in der Standard Anwendungsdomäne dieselbe Kultur gemeinsam verwenden.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 €

Warnung

Obwohl die DefaultThreadCurrentCulture - DefaultThreadCurrentUICulture Eigenschaft und die-Eigenschaft statische Member sind, definieren Sie die Standard Kultur und die standardmäßige Benutzeroberflächen Kultur nur für die Anwendungsdomäne, die zum Zeitpunkt der Festlegung dieser Eigenschaftswerte aktuell ist.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. Weitere Informationen finden Sie im nächsten Abschnitt Kultur-und Anwendungs Domänen.For more information, see the next section, Culture and application domains.

Wenn Sie den DefaultThreadCurrentCulture -und- DefaultThreadCurrentUICulture Eigenschaften Werte zuweisen, ändern sich auch die Kultur und die UI-Kultur der Threads in der Anwendungsdomäne, wenn Ihnen nicht explizit eine Kultur zugewiesen wurde.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. Diese Threads spiegeln jedoch nur die neuen Kultur Einstellungen wider, während Sie in der aktuellen Anwendungsdomäne ausgeführt werden.However, these threads reflect the new culture settings only while they execute in the current application domain. Wenn diese Threads in einer anderen Anwendungsdomäne ausgeführt werden, wird ihre Kultur zur Standard Kultur, die für die jeweilige Anwendungsdomäne definiert ist.If these threads execute in another application domain, their culture becomes the default culture defined for that application domain. Daher wird empfohlen, immer die Kultur des Hauptanwendungs Threads festzulegen und sich nicht auf die DefaultThreadCurrentCulture -und- DefaultThreadCurrentUICulture Eigenschaften zu verlassen, um Sie zu ändern.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.

Kultur-und Anwendungs DomänenCulture and application domains

DefaultThreadCurrentCultureund DefaultThreadCurrentUICulture sind statische Eigenschaften, die explizit eine Standard Kultur nur für die Anwendungsdomäne definieren, die aktuell ist, wenn der Eigenschafts Wert festgelegt oder abgerufen wird.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. Im folgenden Beispiel werden die Standard Kultur und die standardmäßige Benutzeroberflächen Kultur in der Standard Anwendungsdomäne auf Französisch (Frankreich) festgelegt AppDomainSetup , und anschließend AppDomainInitializer wird die-Klasse und der-Delegat verwendet, um die Standard Kultur und die Benutzeroberflächen Kultur in einer neuen Anwendungsdomäne festzulegen. Russisch (Russische Föderation).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). Ein einzelner Thread führt dann in jeder Anwendungsdomäne zwei Methoden aus.A single thread then executes two methods in each application domain. Beachten Sie, dass die Kultur und Benutzeroberflächen Kultur des Threads nicht explizit festgelegt werden. Sie werden von der Standard Kultur und Benutzeroberflächen Kultur der Anwendungsdomäne abgeleitet, in der der Thread ausgeführt wird.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. Beachten Sie auch, DefaultThreadCurrentCulture dass DefaultThreadCurrentUICulture die-Eigenschaft und CultureInfo die-Eigenschaft die Standardwerte der Anwendungsdomäne zurückgeben, die bei der Methodenaufrufe aktuell ist.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

Weitere Informationen zu Kulturen und Anwendungs Domänen finden Sie im Abschnitt "Anwendungs Domänen und Threads" im Thema Anwendungs Domänen .For more information about cultures and application domains, see the "Application Domains and Threads" section in the Application Domains topic.

Kultur-und aufgabenbasierte asynchrone VorgängeCulture and task-based asynchronous operations

Das aufgabenbasierte asynchrone Programmier Muster verwendet Task -Objekte Task<TResult> und-Objekte zum asynchronen Ausführen von Delegaten in Thread Pool-Threads.The task-based asynchronous programming pattern uses Task and Task<TResult> objects to asynchronously execute delegates on thread pool threads. Der bestimmte Thread, in dem eine bestimmte Aufgabe ausgeführt wird, ist im Voraus nicht bekannt, wird jedoch nur zur Laufzeit bestimmt.The specific thread on which a particular task runs is not known in advance, but is determined only at runtime.

Für apps, die auf .NET Framework 4.6.NET Framework 4.6 oder höhere Versionen abzielen, ist die Kultur Teil eines asynchronen Vorgangs Kontexts.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. Mit anderen Worten, beginnend mit apps, die auf .NET Framework 4.6.NET Framework 4.6ausgerichtet sind, erben asynchrone Vorgänge standardmäßig die Werte CurrentCulture der CurrentUICulture -Eigenschaft und der-Eigenschaft des Threads, von dem Sie gestartet werden.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. Wenn die aktuelle Kultur oder die aktuelle UI-Kultur von der System Kultur abweicht, überschreitet die aktuelle Kultur Thread Grenzen und wird zur aktuellen Kultur des Thread Pool-Threads, der einen asynchronen Vorgang ausführt.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.

Das folgende Beispiel bietet eine einfache Veranschaulichung.The following example provides a simple illustration. Es verwendet das TargetFrameworkAttribute -Attribut für das .NET Framework 4.6.NET Framework 4.6ZielIt uses the TargetFrameworkAttribute attribute to target the .NET Framework 4.6.NET Framework 4.6. Das Beispiel definiert einen Func<TResult> formatDelegateDelegaten,, der einige Zahlen zurückgibt, die als Währungswerte formatiert sind.The example defines a Func<TResult> delegate, formatDelegate, that returns some numbers formatted as currency values. Im Beispiel wird die aktuelle System Kultur entweder in Französisch (Frankreich) oder, wenn Französisch (Frankreich) bereits die aktuelle Kultur ist, in Englisch (USA) geändert.The example changes the current system culture to either French (France) or, if French (France) is already the current culture, English (United States). Dann:It then:

  • Ruft den Delegaten direkt auf, sodass er synchron im Haupt-App-Thread ausgeführt wird.Invokes the delegate directly so that it runs synchronously on the main app thread.

  • Erstellt eine Aufgabe, die den Delegaten asynchron in einem Thread Pool Thread ausführt.Creates a task that executes the delegate asynchronously on a thread pool thread.

  • Erstellt eine Aufgabe, die den Delegaten synchron im Haupt-App-Thread ausführt, Task.RunSynchronously indem die-Methode aufgerufen wird.Creates a task that executes the delegate synchronously on the main app thread by calling the Task.RunSynchronously method.

Wie die Ausgabe des Beispiels zeigt, wenn die aktuelle Kultur in Französisch (Frankreich) geändert wird, wird die aktuelle Kultur des Threads, von dem aus Aufgaben asynchron aufgerufen werden, zur aktuellen Kultur für diesen asynchronen Vorgang.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 €

Für apps, die auf Versionen des .NET Framework vor dem .NET Framework 4.6.NET Framework 4.6abzielen, oder für apps, die nicht auf eine bestimmte Version des .NET Framework abzielen, ist die Kultur des aufrufenden Threads nicht Teil des Kontexts einer Aufgabe.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. Wenn eine nicht explizit definiert ist, ist die Kultur neuer Threads standardmäßig die System Kultur.Instead, unless one is explicitly defined, the culture of new threads by default is the system culture. Das folgende Beispiel, das mit dem vorherigen Beispiel identisch ist, mit dem Unterschied TargetFrameworkAttribute , dass das-Attribut fehlt, wird veranschaulicht.The following example, which is identical to the previous example except that it lacks the TargetFrameworkAttribute attribute, illustrates this. Da die System Kultur des Systems, auf dem das Beispiel ausgeführt wurde, Englisch (USA) war, ist die Kultur der Aufgabe, die asynchron in einem Thread Pool Thread ausgeführt wird, "en-US" und nicht "fr-FR".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 €

Für apps, .NET Framework 4.5.NET Framework 4.5 die auf Versionen des-.NET Framework von und höher, aber vor dem .NET Framework 4.6.NET Framework 4.6abzielen, können Sie die-Eigenschaft und die DefaultThreadCurrentCulture - DefaultThreadCurrentUICulture Eigenschaft verwenden, um sicherzustellen, dass die Kultur des aufrufenden Threads in asynchronen Aufgaben verwendet wird, die Ausführung in Thread Pool-Threads.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. Das folgende Beispiel ist mit dem vorherigen Beispiel identisch, mit dem Unterschied, DefaultThreadCurrentCulture dass die-Eigenschaft verwendet wird, um sicherzustellen, dass Thread Pool-Threads dieselbe Kultur aufweisen wie der Haupt Anwendungs Thread.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 €

DefaultThreadCurrentCultureund DefaultThreadCurrentUICulture sind pro-App-Domänen Eigenschaften, d. h., Sie richten eine Standard Kultur für alle Threads ein, denen nicht explizit eine Kultur in einer bestimmten Anwendungsdomäne zugewiesen wird.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. Für apps, die auf .NET Framework 4.6.NET Framework 4.6 oder höher ausgerichtet sind, bleibt die Kultur des aufrufenden Threads jedoch Teil eines asynchronen Aufgaben Kontexts, auch wenn der Task Anwendungs Domänen Grenzen überschreitet.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.

Das folgende Beispiel zeigt, dass die Kultur des aufrufenden Threads die aktuelle Kultur eines aufgabenbasierten asynchronen Vorgangs ist, auch wenn die von der Aufgabe ausgeführte Methode Anwendungs Domänen Grenzen überschreitet.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. Es definiert eine Klasse, DataRetriever, mit einer einzigen GetFormattedNumberMethode,, die eine zufällige Gleit Komma Zahl mit doppelter Genauigkeit zwischen 1 und 1.000 zurückgibt, die als Währungswert formatiert ist.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. Eine erste Aufgabe wird ausgeführt, die einfach eine DataRetriever -Instanz instanziiert und die GetFormattedNumber zugehörige-Methode aufruft.A first task is run that simply instantiates a DataRetriever instance and calls its GetFormattedNumber method. Eine zweite Aufgabe meldet die aktuelle Anwendungsdomäne, erstellt eine neue Anwendungsdomäne, instanziiert eine DataRetriever -Instanz in der neuen Anwendungsdomäne und ruft Ihre GetFormattedNumber -Methode auf.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. Wie die Ausgabe des Beispiels zeigt, ist die aktuelle Kultur im aufrufenden Thread, in der ersten Aufgabe und in der zweiten Aufgabe sowohl bei der Ausführung in der Haupt Anwendungsdomäne als auch in der zweiten Anwendungsdomäne unverändert geblieben.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-ObjektserialisierungCultureInfo object serialization

Wenn ein CultureInfo -Objekt serialisiert wird, ist Name alles, was tatsächlich gespeichert UseUserOverridewird, und.When a CultureInfo object is serialized, all that is actually stored is Name and UseUserOverride. Die Deserialisierung erfolgt nur in einer Umgebung, Name in der dieselbe Bedeutung hat.It is successfully de-serialized only in an environment where that Name has the same meaning. Die folgenden drei Beispiele zeigen, warum dies nicht immer der Fall ist:The following three examples show why this is not always the case:

  • Wenn der CultureTypes -Eigenschafts CultureTypes.InstalledWin32CulturesWert ist und diese Kultur zuerst in eine bestimmte Version des Windows-Betriebssystems eingeführt wurde, ist es nicht möglich, Sie in einer früheren Version von Windows zu deserialisieren.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. Wenn z. b. eine Kultur in Windows 10 eingeführt wurde, kann Sie nicht unter Windows 8 deserialisiert werden.For example, if a culture was introduced in Windows 10, it cannot be deserialized on Windows 8.

  • Wenn der CultureTypes Wert ist CultureTypes.UserCustomCulture, und auf dem Computer, auf dem er deserialisiert ist, diese benutzerdefinierte Kultur nicht installiert ist, ist es nicht möglich, ihn zu deserialisieren.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.

  • Wenn der CultureTypes Wert ist CultureTypes.ReplacementCultures, und der Computer, auf dem er deserialisiert ist, nicht über diese Ersetzungs Kultur verfügt, wird er in denselben Namen deserialisiert, jedoch nicht die gleichen Merkmale.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. Wenn z. b. "en-US" eine Ersatz Kultur auf Computer a, aber nicht auf Computer b ist und CultureInfo ein-Objekt, das sich auf diese Kultur bezieht, auf Computer a serialisiert und auf Computer b deserialisiert wird, ist keines der benutzerdefinierten Merkmale der Kultur. mündlich.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. Die Kultur wird erfolgreich deserialisiert, jedoch mit einer anderen Bedeutung.The culture deserializes successfully, but with a different meaning.

Außer Kraft setzungen der SystemsteuerungControl Panel overrides

Der Benutzer kann einige der Werte, die der aktuellen Kultur von Windows zugeordnet sind, über die Regions-und Sprachoptionen in der Systemsteuerung überschreiben.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. Beispielsweise kann der Benutzer das Datum in einem anderen Format anzeigen oder eine andere Währung als den Standardwert für die Kultur verwenden.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. Im Allgemeinen sollten Ihre Anwendungen diese außer Kraft setzungen von Benutzern berücksichtigen.In general, your applications should honor these user overrides.

Wenn UseUserOverride CultureInfo ist true und die angegebene Kultur mit der aktuellen Kultur von Windows übereinstimmt, verwendet diese außer Kraft setzungen, DateTimeFormatInfo einschließlich der Benutzereinstellungen für die Eigenschaften der-Instanz DateTimeFormat , die von der-Eigenschaft zurückgegeben wird. und die Eigenschaften der NumberFormatInfo -Instanz, die von der NumberFormat -Eigenschaft zurückgegeben wird.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. Wenn die Benutzereinstellungen mit der Kultur, die dem CultureInfozugeordnet ist, nicht kompatibel sind, beispielsweise wenn der ausgewählte Kalender nicht zu gehört OptionalCalendars, sind die Ergebnisse der Methoden und die Werte der Eigenschaften nicht definiert.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.

Alternative Sortier ReihenfolgenAlternate sort orders

Einige Kulturen unterstützten mehr als eine Sortierreihenfolge.Some cultures support more than one sort order. Beispiel:For example:

  • Die Kultur Spanisch (Spanien) hat zwei Sortier Reihenfolgen: die standardmäßige internationale Sortierreihenfolge und die herkömmliche Sortierreihenfolge.The Spanish (Spain) culture has two sort orders: the default international sort order, and the traditional sort order. Wenn Sie ein CultureInfo -Objekt mit dem Namen der es-es-Kultur instanziieren, wird die internationale Sortierreihenfolge verwendet.When you instantiate a CultureInfo object with the es-ES culture name, the international sort order is used. Wenn Sie ein CultureInfo -Objekt mit dem Kultur Namen "es-es-tradnl" instanziieren, wird die herkömmliche Sortierreihenfolge verwendet.When you instantiate a CultureInfo object with the es-ES-tradnl culture name, the traditional sort order is used.

  • Die Kultur zh-cn (Chinesisch (vereinfacht, PRC)) unterstützt zwei Sortier Reihenfolgen: nach Aussprache (Standard) und nach Strich Anzahl.The zh-CN (Chinese (Simplified, PRC)) culture supports two sort orders: by pronunciation (the default) and by stroke count. Wenn Sie ein CultureInfo -Objekt mit dem Namen der zh-cn-Kultur instanziieren, wird die Standard Sortierreihenfolge verwendet.When you instantiate a CultureInfo object with the zh-CN culture name, the default sort order is used. Wenn Sie ein CultureInfo -Objekt mit einem lokalen Bezeichner von 0x00020804 instanziieren, werden Zeichen folgen nach Strich Anzahl sortiert.When you instantiate a CultureInfo object with a local identifier of 0x00020804, strings are sorted by stroke count.

Die folgende Tabelle enthält die Kulturen, die unterschiedliche Sortierreihenfolgen unterstützen, sowie die Bezeichner für die standardmäßigen und die alternativen Sortierreihenfolgen.The following table lists the cultures that support alternate sort orders and the identifiers for the default and alternate sort orders.

KulturnameCulture name cultureCulture Standardsortierreihenfolge und BezeichnerDefault sort name and identifier Alternative Sortierreihenfolge und BezeichnerAlternate sort name and identifier
es-ESes-ES Spanisch (Spanien)Spanish (Spain) International: 0x00000C0AInternational: 0x00000C0A Traditionell: 0x0000040ATraditional: 0x0000040A
zh-TWzh-TW Chinesisch (Taiwan)Chinese (Taiwan) Anzahl der Striche: 0x00000404Stroke Count: 0x00000404 Bopomofo: 0x00030404Bopomofo: 0x00030404
zh-CNzh-CN Chinesisch (VRC)Chinese (PRC) Aussprache: 0x00000804Pronunciation: 0x00000804 Anzahl der Striche: 0x00020804Stroke Count: 0x00020804
zh-HKzh-HK Chinesisch (Hongkong SAR)Chinese (Hong Kong SAR) Anzahl der Striche: 0x00000c04Stroke Count: 0x00000c04 Anzahl der Striche: 0x00020c04Stroke Count: 0x00020c04
zh-SGzh-SG Chinesisch (Singapur)Chinese (Singapore) Aussprache: 0x00001004Pronunciation: 0x00001004 Anzahl der Striche: 0x00021004Stroke Count: 0x00021004
zh-MOzh-MO Chinesisch (Macau SAR)Chinese (Macao SAR) Aussprache: 0x00001404Pronunciation: 0x00001404 Anzahl der Striche: 0x00021404Stroke Count: 0x00021404
ja-JPja-JP Japanisch (Japan)Japanese (Japan) Standard: 0x00000411Default: 0x00000411 Unicode: 0x00010411Unicode: 0x00010411
ko-KRko-KR Koreanisch (Korea)Korean (Korea) Standard: 0x00000412Default: 0x00000412 Koreanisch Xwansung – Unicode: 0x00010412Korean Xwansung - Unicode: 0x00010412
de-DEde-DE Deutsch (Deutschland)German (Germany) Wörterbuch: 0x00000407Dictionary: 0x00000407 Telefonbuchsortierung DIN: 0x00010407Phone Book Sort DIN: 0x00010407
hu-HUhu-HU Ungarisch (Ungarn)Hungarian (Hungary) Standard: 0x0000040eDefault: 0x0000040e Technische Sortierung: 0x0001040eTechnical Sort: 0x0001040e
ka-GEka-GE Georgisch (Georgien)Georgian (Georgia) Traditionell: 0x00000437Traditional: 0x00000437 Moderne Sortierung: 0x00010437Modern Sort: 0x00010437

Die aktuelle Kultur und UWP-appsThe current culture and UWP apps

In universelle Windows-Plattform-Apps (UWP) sind CurrentCulture die CurrentUICulture -Eigenschaft und die-Eigenschaft mit Lese-/Schreibzugriff, genauso wie Sie in .NET Framework und .net Core-apps.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-apps erkennen jedoch eine einzelne Kultur.However, UWP apps recognize a single culture. Die CurrentCulture Eigenschaften CurrentUICulture und werden dem ersten Wert in der Windows. applicationmodel. resources. Core. ResourceManager. DefaultContext. Languages -Auflistung zugeordnet.The CurrentCulture and CurrentUICulture properties map to the first value in the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages collection.

In .NET Framework-und .net Core-Apps ist die aktuelle Kultur eine Thread spezifische Einstellung, und die CurrentCulture - CurrentUICulture Eigenschaft und die-Eigenschaft reflektieren die Kultur und die UI-Kultur des aktuellen Threads.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. In UWP-apps wird die aktuelle Kultur der Windows. applicationmodel. resources. Core. ResourceManager. DefaultContext. Languages -Auflistung zugeordnet, bei der es sich um eine globale Einstellung handelt.In UWP apps, the current culture maps to the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages collection, which is a global setting. Durch Festlegen CurrentCulture der CurrentUICulture -Eigenschaft oder der-Eigenschaft wird die Kultur der gesamten APP geändert; die Kultur kann nicht pro Thread festgelegt werden.Setting the CurrentCulture or CurrentUICulture property changes the culture of the entire app; culture cannot be set on a per-thread basis.

Konstruktoren

CultureInfo(Int32) CultureInfo(Int32) CultureInfo(Int32) CultureInfo(Int32)

Initialisiert eine neue Instanz der CultureInfo-Klasse auf der Grundlage der durch den Kulturbezeichner angegebenen Kultur.Initializes a new instance of the CultureInfo class based on the culture specified by the culture identifier.

CultureInfo(Int32, Boolean) CultureInfo(Int32, Boolean) CultureInfo(Int32, Boolean) CultureInfo(Int32, Boolean)

Initialisiert eine neue Instanz der CultureInfo-Klasse auf der Grundlage der durch den Kulturbezeichner angegebenen Kultur und auf der Grundlage des booleschen Werts, der angibt, ob die vom Benutzer ausgewählten Kultureinstellungen des Systems verwendet werden sollen.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(String) CultureInfo(String) CultureInfo(String)

Initialisiert eine neue Instanz der CultureInfo-Klasse auf der Grundlage der durch den Namen angegebenen Kultur.Initializes a new instance of the CultureInfo class based on the culture specified by name.

CultureInfo(String, Boolean) CultureInfo(String, Boolean) CultureInfo(String, Boolean) CultureInfo(String, Boolean)

Initialisiert eine neue Instanz der CultureInfo-Klasse auf der Grundlage der durch den Namen angegebenen Kultur und auf der Grundlage des booleschen Werts, der angibt, ob die vom Benutzer ausgewählten Kultureinstellungen des Systems verwendet werden sollen.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.

Eigenschaften

Calendar Calendar Calendar Calendar

Ruft den von der Kultur verwendeten Standardkalender ab.Gets the default calendar used by the culture.

CompareInfo CompareInfo CompareInfo CompareInfo

Ruft die CompareInfo ab, in der festgelegt wird, wie Zeichenfolgen für die Kultur verglichen werden.Gets the CompareInfo that defines how to compare strings for the culture.

CultureTypes CultureTypes CultureTypes CultureTypes

Ruft die Kulturtypen ab, die das aktuelle CultureInfo-Objekt betreffen.Gets the culture types that pertain to the current CultureInfo object.

CurrentCulture CurrentCulture CurrentCulture CurrentCulture

Ruft das CultureInfo-Objekt ab, das die vom aktuellen Thread verwendete Kultur darstellt, oder setzt dieses Objekt.Gets or sets the CultureInfo object that represents the culture used by the current thread.

CurrentUICulture CurrentUICulture CurrentUICulture CurrentUICulture

Ruft das CultureInfo-Objekt ab, das die aktuelle Benutzeroberfläche darstellt, mit deren Hilfe der Ressourcen-Manager kulturabhängige Ressourcen zur Laufzeit sucht, oder setzt dieses Objekt.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 DateTimeFormat DateTimeFormat DateTimeFormat

Ruft die DateTimeFormatInfo ab, die das für die Kultur spezifische Format zum Anzeigen von Datumsangaben und Uhrzeiten definiert, oder legt diese fest.Gets or sets a DateTimeFormatInfo that defines the culturally appropriate format of displaying dates and times.

DefaultThreadCurrentCulture DefaultThreadCurrentCulture DefaultThreadCurrentCulture DefaultThreadCurrentCulture

Ruft die Standardkultur für Threads in der aktuellen Anwendungsdomäne ab oder legt diese fest.Gets or sets the default culture for threads in the current application domain.

DefaultThreadCurrentUICulture DefaultThreadCurrentUICulture DefaultThreadCurrentUICulture DefaultThreadCurrentUICulture

Ruft die standardmäßige Benutzeroberflächenkultur für Threads in der aktuellen Anwendungsdomäne ab oder legt diese fest.Gets or sets the default UI culture for threads in the current application domain.

DisplayName DisplayName DisplayName DisplayName

Ruft den vollständig lokalisierten Kulturnamen ab.Gets the full localized culture name.

EnglishName EnglishName EnglishName EnglishName

Ruft den Kulturnamen im Format languagefull [country/regionfull] auf Englisch ab.Gets the culture name in the format languagefull [country/regionfull] in English.

IetfLanguageTag IetfLanguageTag IetfLanguageTag IetfLanguageTag

Veraltet.Deprecated. Ruft die Sprachkennung gemäß dem Standard RFC 4646 ab.Gets the RFC 4646 standard identification for a language.

InstalledUICulture InstalledUICulture InstalledUICulture InstalledUICulture

Ruft die CultureInfo ab, die die mit dem Betriebssystem installierte Kultur darstellt.Gets the CultureInfo that represents the culture installed with the operating system.

InvariantCulture InvariantCulture InvariantCulture InvariantCulture

Ruft das kulturunabhängige (invariante) CultureInfo-Objekt ab.Gets the CultureInfo object that is culture-independent (invariant).

IsNeutralCulture IsNeutralCulture IsNeutralCulture IsNeutralCulture

Ruft einen Wert ab, der angibt, ob die aktuelle CultureInfo eine neutrale Kultur darstellt.Gets a value indicating whether the current CultureInfo represents a neutral culture.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Ruft einen Wert ab, der angibt, ob die aktuelle CultureInfo schreibgeschützt ist.Gets a value indicating whether the current CultureInfo is read-only.

KeyboardLayoutId KeyboardLayoutId KeyboardLayoutId KeyboardLayoutId

Ruft den aktiven Bezeichner für das Eingabegebietsschema ab.Gets the active input locale identifier.

LCID LCID LCID LCID

Ruft den Kulturbezeichner für die aktuelle CultureInfo ab.Gets the culture identifier for the current CultureInfo.

Name Name Name Name

Ruft den Kulturnamen im Format languagecode2-country/regioncode2ab.Gets the culture name in the format languagecode2-country/regioncode2.

NativeName NativeName NativeName NativeName

Ruft den Namen der Kultur ab, der aus der Sprache, dem Land oder der Region und dem optionalen Skript besteht, das in der Kultur angezeigt werden soll.Gets the culture name, consisting of the language, the country/region, and the optional script, that the culture is set to display.

NumberFormat NumberFormat NumberFormat NumberFormat

Ruft die NumberFormatInfo ab, die das für die Kultur spezifische Format zum Anzeigen von Zahlen, Währungen und Prozentsätzen definiert, oder legt diese fest.Gets or sets a NumberFormatInfo that defines the culturally appropriate format of displaying numbers, currency, and percentage.

OptionalCalendars OptionalCalendars OptionalCalendars OptionalCalendars

Ruft die Liste der Kalender ab, die von dieser Kultur verwendet werden können.Gets the list of calendars that can be used by the culture.

Parent Parent Parent Parent

Ruft die CultureInfo ab, die die übergeordnete Kultur zur aktuellen CultureInfo darstellt.Gets the CultureInfo that represents the parent culture of the current CultureInfo.

TextInfo TextInfo TextInfo TextInfo

Ruft die TextInfo ab, die das der Kultur zugeordnete Schriftsystem definiert.Gets the TextInfo that defines the writing system associated with the culture.

ThreeLetterISOLanguageName ThreeLetterISOLanguageName ThreeLetterISOLanguageName ThreeLetterISOLanguageName

Ruft den aus drei Buchstaben bestehenden Code nach ISO 639-2 für die Sprache der aktuellen CultureInfo ab.Gets the ISO 639-2 three-letter code for the language of the current CultureInfo.

ThreeLetterWindowsLanguageName ThreeLetterWindowsLanguageName ThreeLetterWindowsLanguageName ThreeLetterWindowsLanguageName

Ruft den aus drei Buchstaben bestehenden Code für die Sprache ab, wie er in der Windows-API definiert ist.Gets the three-letter code for the language as defined in the Windows API.

TwoLetterISOLanguageName TwoLetterISOLanguageName TwoLetterISOLanguageName TwoLetterISOLanguageName

Ruft den aus zwei Buchstaben bestehenden Code nach ISO 639-1 für die Sprache der aktuellen CultureInfo ab.Gets the ISO 639-1 two-letter code for the language of the current CultureInfo.

UseUserOverride UseUserOverride UseUserOverride UseUserOverride

Ruft einen Wert ab, der angibt, ob das aktuelle CultureInfo-Objekt die vom Benutzer ausgewählten Kultureinstellungen verwendet.Gets a value indicating whether the current CultureInfo object uses the user-selected culture settings.

Methoden

ClearCachedData() ClearCachedData() ClearCachedData() ClearCachedData()

Aktualisiert die zwischengespeicherten kulturbezogenen Informationen.Refreshes cached culture-related information.

Clone() Clone() Clone() Clone()

Erstellt eine Kopie der aktuellen CultureInfo.Creates a copy of the current CultureInfo.

CreateSpecificCulture(String) CreateSpecificCulture(String) CreateSpecificCulture(String) CreateSpecificCulture(String)

Erstellt eine CultureInfo, die die zum angegebenen Namen gehörige spezifische Kultur darstellt.Creates a CultureInfo that represents the specific culture that is associated with the specified name.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt dieselbe Kultur aufweist wie die aktuelle CultureInfo.Determines whether the specified object is the same culture as the current CultureInfo.

GetConsoleFallbackUICulture() GetConsoleFallbackUICulture() GetConsoleFallbackUICulture() GetConsoleFallbackUICulture()

Ruft im Falle einer ungeeigneten Standard-GUI-Kultur eine alternative Kultur der Benutzeroberfläche für Konsolenanwendungen auf.Gets an alternate user interface culture suitable for console applications when the default graphic user interface culture is unsuitable.

GetCultureInfo(Int32) GetCultureInfo(Int32) GetCultureInfo(Int32) GetCultureInfo(Int32)

Ruft eine zwischengespeicherte und schreibgeschützte Instanz einer Kultur mithilfe des angegebenen Kulturbezeichners ab.Retrieves a cached, read-only instance of a culture by using the specified culture identifier.

GetCultureInfo(String) GetCultureInfo(String) GetCultureInfo(String) GetCultureInfo(String)

Ruft eine zwischengespeicherte und schreibgeschützte Instanz einer Kultur mithilfe des angegebenen Kulturnamens ab.Retrieves a cached, read-only instance of a culture using the specified culture name.

GetCultureInfo(String, String) GetCultureInfo(String, String) GetCultureInfo(String, String) GetCultureInfo(String, String)

Ruft eine zwischengespeicherte und schreibgeschützte Instanz einer Kultur ab.Retrieves a cached, read-only instance of a culture. Mit Parametern wird eine Kultur angegeben, die mit dem TextInfo-Objekt und dem CompareInfo-Objekt initialisiert wird, die wiederum von einer anderen Kultur angegeben werden.Parameters specify a culture that is initialized with the TextInfo and CompareInfo objects specified by another culture.

GetCultureInfoByIetfLanguageTag(String) GetCultureInfoByIetfLanguageTag(String) GetCultureInfoByIetfLanguageTag(String) GetCultureInfoByIetfLanguageTag(String)

Veraltet.Deprecated. Ruft ein schreibgeschütztes CultureInfo-Objekt ab, dessen linguistische Merkmale vom angegebenen RFC 4646-Sprachtag identifiziert werden.Retrieves a read-only CultureInfo object having linguistic characteristics that are identified by the specified RFC 4646 language tag.

GetCultures(CultureTypes) GetCultures(CultureTypes) GetCultures(CultureTypes) GetCultures(CultureTypes)

Ruft die Liste der unterstützten Kulturen ab, die entsprechend dem angegebenen CultureTypes-Parameter gefiltert sind.Gets the list of supported cultures filtered by the specified CultureTypes parameter.

GetFormat(Type) GetFormat(Type) GetFormat(Type) GetFormat(Type)

Ruft ein Objekt ab, das definiert, wie der angegebene Typ formatiert werden soll.Gets an object that defines how to format the specified type.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Hashfunktion für die aktuelle CultureInfo, die sich für die Verwendung in Hashalgorithmen und -datenstrukturen eignet, z. B. in einer Hashtabelle.Serves as a hash function for the current CultureInfo, suitable for hashing algorithms and data structures, such as a hash table.

GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ReadOnly(CultureInfo) ReadOnly(CultureInfo) ReadOnly(CultureInfo) ReadOnly(CultureInfo)

Gibt einen schreibgeschützten Wrapper für das angegebene CultureInfo-Objekt zurück.Returns a read-only wrapper around the specified CultureInfo object.

ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge mit dem Namen der aktuellen CultureInfo im Format languagecode2-country/regioncode2ab.Returns a string containing the name of the current CultureInfo in the format languagecode2-country/regioncode2.

Gilt für:

Siehe auch