Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

CultureInfo.CurrentCulture-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft das CultureInfo-Objekt ab, das die vom aktuellen Thread verwendete Kultur darstellt, oder setzt dieses Objekt.

Namespace:   System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

public static CultureInfo CurrentCulture { get; set; }

Eigenschaftswert

Type: System.Globalization.CultureInfo

Ein Objekt, das die vom aktuellen Thread verwendete Kultur darstellt.

Exception Condition
ArgumentNullException

Die Eigenschaft ist auf null festgelegt.

Die CultureInfo -Objekt, das von dieser Eigenschaft zurückgegeben wird und die zugeordneten Objekte bestimmen das Standardformat für Datumsangaben, Uhrzeiten, Zahlen, Currency-Werte, die Sortierreihenfolge des Texts, Groß-/ Kleinschreibungskonventionen und Zeichenfolgenvergleiche.

Die aktuelle Kultur ist eine Eigenschaft des ausgeführten Threads, die von der statischen zurückgegeben wird Thread.CurrentThread Eigenschaft. Der Wert des der CultureInfo.CurrentCulture Eigenschaft entspricht dem Wert, der die Thread.CurrentCulture Eigenschaft. Das Abrufen des Werts der CultureInfo.CurrentCulture Eigenschaft entspricht dem Abrufen der CultureInfo zurückgegebenes Objekt die Thread.CurrentThread.CurrentCulture Eigenschaft. Beginnend mit der .NET Framework 4.6, Festlegen des Werts der CultureInfo.CurrentCulture Eigenschaft ändert sich ebenfalls die aktuelle Threadkultur verwendet.

System_CAPS_noteHinweis

In .NET Framework 4.5.2 und frühere Versionen der CurrentCulture Eigenschaft ist schreibgeschützt. d. h. Sie können den Wert der Eigenschaft abrufen, aber Sie können ihn nicht festlegen. Um die aktuelle Kultur zu ändern, Sie weisen die CultureInfo -Objekt, das der neue Kultur entspricht der Thread.CurrentThread.CurrentCulture Eigenschaft. Beginnend mit der .NET Framework 4.6die CurrentCulture Eigenschaft ist Lese-/ Schreibzugriff; Sie können sowohl festlegen und Abrufen des Werts der Eigenschaft. Wenn Sie den Wert der Eigenschaft zum Festlegen einer CultureInfo Objekt, das eine neue Kultur, den Wert des darstellt der Thread.CurrentThread.CurrentCulture Eigenschaft auch geändert.

In diesem Abschnitt

Wie wird die Kultur eines Threads bestimmt.
Abrufen der aktuellen Kultur
Das explizite Festlegen der CurrentCulture-Eigenschaft
Die aktuelle Kultur und die Benutzer-Außerkraftsetzungen
Die Kultur und die Windows-Apps

Wenn ein Thread gestartet wird, wird seine Kultur zunächst wie folgt bestimmt:

  • Durch Abrufen der Kultur, die von angegeben wird die DefaultThreadCurrentCulture Eigenschaft in der Anwendungsdomäne, in dem der Thread ausgeführt wird, der den Wert der Eigenschaft ist nicht null.

  • Wenn der Thread ein Thread des Threadpools, die ausgeführt wird ist, einen aufgabenbasierten asynchronen Vorgängen und die app aufgerichtet ist die .NET Framework 4.6 oder eine höhere Version von .NET Framework, die Kultur wird von der Kultur des aufrufenden Threads bestimmt. Im folgenden Beispiel wird die aktuelle Kultur, Portugiesisch (Brasilien) und sechs Aufgaben gestartet, von die jede die Thread-ID, die Task-ID und die aktuelle Kultur angezeigt. Jede der Vorgänge (und die Threads) hat die Kultur des aufrufenden Threads geerbt.

    using System;
    using System.Collections.Generic;
    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()
       {
          var tasks = new List<Task>();
          Console.WriteLine("The current culture is {0}", 
                            Thread.CurrentThread.CurrentCulture.Name);
          Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR");
          // Change the current culture to Portuguese (Brazil).
          Console.WriteLine("Current culture changed to {0}",
                            Thread.CurrentThread.CurrentCulture.Name);
          Console.WriteLine("Application thread is thread {0}",
                            Thread.CurrentThread.ManagedThreadId);
          // Launch six tasks and display their current culture.
          for (int ctr = 0; ctr <= 5; ctr++)
             tasks.Add(Task.Run( () => {
                                   Console.WriteLine("Culture of task {0} on thread {1} is {2}",
                                                     Task.CurrentId, 
                                                     Thread.CurrentThread.ManagedThreadId,
                                                     Thread.CurrentThread.CurrentCulture.Name);
                                } ));                     
    
          Task.WaitAll(tasks.ToArray());
       }
    }
    // The example displays output like the following:
    //     The current culture is en-US
    //     Current culture changed to pt-BR
    //     Application thread is thread 9
    //     Culture of task 2 on thread 11 is pt-BR
    //     Culture of task 1 on thread 10 is pt-BR
    //     Culture of task 3 on thread 11 is pt-BR
    //     Culture of task 5 on thread 11 is pt-BR
    //     Culture of task 6 on thread 11 is pt-BR
    //     Culture of task 4 on thread 10 is pt-BR
    

    Weitere Informationen finden Sie im Abschnitt "Kultur und aufgabenbasierte asynchrone Vorgänge" in der CultureInfo Thema.

  • Durch Aufruf der Windows GetUserDefaultLocaleName Funktion.

Beachten Sie, dass wenn Sie festlegen, dass eine bestimmte Kultur, die von der Kultur System installiert oder bevorzugten Kultur des Benutzers unterscheidet, und die Anwendung mehrere Threads startet, die aktuelle Kultur des Threads die Kultur, die von zurückgegeben wird das GetUserDefaultLocaleName funktionsfähig, es sei denn, Sie eine Kultur zugewiesen der DefaultThreadCurrentCulture Eigenschaft in der Anwendungsdomäne, in dem der Thread ausgeführt wird.

Weitere Informationen, wie die Kultur eines Threads bestimmt wird, finden Sie im Abschnitt "Kultur und Threads" in der CultureInfo Referenzseite.

Die CultureInfo.CurrentCulture Eigenschaft ist eine Einstellung threadspezifisches; d. h. jeder Thread eine eigene Kultur verfügen kann. Sie erhalten die Kultur des aktuellen Threads an, indem Sie das Abrufen des Werts der CultureInfo.CurrentCulture -Eigenschaft, wie im folgenden Beispiel illustriert.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo culture = CultureInfo.CurrentCulture;
      Console.WriteLine("The current culture is {0} [{1}]",
                        culture.NativeName, culture.Name);
   }
}
// The example displays output like the following:
//       The current culture is English (United States) [en-US]

Sie können auch den Wert der Kultur des aktuellen Threads Abrufen der Thread.CurrentThread Eigenschaft.

Beginnend mit der .NET Framework 4.6, um die Kultur zu ändern, die durch einen vorhandenen Thread verwendet wird Festlegen der CultureInfo.CurrentCulture -Eigenschaft der neuen Kultur. Wenn Sie explizit ändern, die Kultur eines Threads auf diese Weise ändern, weiterhin auf, wenn der Thread Anwendungsdomänengrenzen überschreitet. Im folgende Beispiel ändert die aktuelle Threadkultur, Niederländisch (Niederlande). Es zeigt auch, dass, wenn der aktuelle Thread Anwendungsdomänengrenzen überschreitet, dessen aktuelle Kultur geänderten bleibt.

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

public class Info : MarshalByRefObject
{
   public void ShowCurrentCulture()
   {
      Console.WriteLine("Culture of {0} in application domain {1}: {2}",
                        Thread.CurrentThread.Name,
                        AppDomain.CurrentDomain.FriendlyName,
                        CultureInfo.CurrentCulture.Name);
   }
}

public class Example
{
   public static void Main()
   {
      Info inf = new Info();
      // Set the current culture to Dutch (Netherlands).
      Thread.CurrentThread.Name = "MainThread";
      CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("nl-NL");
      inf.ShowCurrentCulture();

      // Create a new application domain.
       AppDomain ad = AppDomain.CreateDomain("Domain2");
       Info inf2 = (Info) ad.CreateInstanceAndUnwrap(typeof(Info).Assembly.FullName, "Info");
       inf2.ShowCurrentCulture();                       
   }
}
// The example displays the following output:
//       Culture of MainThread in application domain ChangeCulture1.exe: nl-NL
//       Culture of MainThread in application domain Domain2: nl-NL
System_CAPS_noteHinweis

Ändern die Kultur mithilfe der CultureInfo.CurrentCulture Eigenschaft erfordert eine SecurityPermission Berechtigung mit der ControlThread festgelegten Wert. Bearbeiten von Threads ist aufgrund der mit Threads verbundenen Sicherheitszustands riskant. Daher sollte diese Berechtigung erteilt werden, nur für vertrauenswürdigen Code, und klicken Sie dann nur nach Bedarf. Sie können Threadkultur in teilweise vertrauenswürdigem Code nicht ändern.

Beginnend mit der .NET Framework 4, Sie können die aktuelle Threadkultur explizit in einer bestimmten Kultur (z. B. Französisch (Kanada)) oder eine neutrale Kultur (z. B. Französisch) ändern. Wenn eine CultureInfo Objekt stellt eine neutrale Kultur, die Werte der CultureInfo Eigenschaften wie z. B. Calendar, CompareInfo, DateTimeFormat, NumberFormat, und TextInfo reflektieren die bestimmte Kultur, die die neutrale Kultur zugeordnet ist. Beispielsweise ist die bestimmende Kultur für die neutrale Kultur Englisch Englisch (Vereinigte Staaten); die bestimmende Kultur für die deutscher Kultur "Deutsch (Deutschland)". Das folgende Beispiel veranschaulicht den Unterschied bei der Formatierung, wenn die aktuelle Kultur auf eine bestimmte Kultur Französisch (Kanada) und eine neutrale Kultur festgelegt ist, Französisch.

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

public class Example
{
   public static void Main()
   {
      double value = 1634.92;
      CultureInfo.CurrentCulture = new CultureInfo("fr-CA");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}\n", value);

      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}", value);
   }
}
// The example displays the following output:
//       Current Culture: fr-CA
//       1 634,92 $
//       
//       Current Culture: fr
//       1 634,92 €

Können Sie auch die CultureInfo.CurrentCulture Eigenschaft zusammen mit der HttpRequest.UserLanguages -Eigenschaft zum Festlegen der CurrentCulture Eigenschaft einer ASP.NET-Anwendung für den Benutzer bevorzugten Kultur, wie im folgenden Beispiel veranschaulicht.

CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

Windows kann Benutzer, der die Standardeigenschaftenwerte überschreiben die CultureInfo Objekt und die zugeordneten Objekte mithilfe von Regions- und Sprachoptionen in der Systemsteuerung. Die CultureInfo zurückgegebenes Objekt die CurrentCulture Eigenschaft spiegelt wider, diese Benutzer überschreibt in den folgenden Fällen:

  • Wenn die aktuelle Threadkultur implizit, der von Windows festgelegt ist GetUserDefaultLocaleName Funktion.

  • Wenn die aktuelle Threadkultur definiert die DefaultThreadCurrentCulture Eigenschaft entspricht der aktuellen Kultur des Windows-System.

  • Wenn die aktuelle Threadkultur für eine Kultur zurückgegebenes explizit festgelegt ist die CreateSpecificCulture -Methode, und die aktuelle Systemkultur von Windows Kultur entspricht.

  • Wenn die aktuelle Threadkultur explizit für eine Kultur instanziiert, indem festgelegt wird die CultureInfo(String) Konstruktor, und die aktuelle Systemkultur von Windows Kultur entspricht.

In einigen Fällen, insbesondere für serveranwendungen, die aktuelle Kultur festlegen eine CultureInfo -Objekt, das Benutzer Außerkraftsetzungen wiedergibt, kann unerwünscht sein. Sie können stattdessen die aktuelle Threadkultur festlegen, um eine CultureInfo -Objekt, das Benutzer nicht wiedergibt Außerkraftsetzungen auf folgende Weise:

In Windows-apps die CurrentCulture Eigenschaft ist schreibgeschützt. Sie können die aktuelle Kultur festlegen, indem Sie mithilfe der Windowsfunktion ResourceContext.Languages Eigenschaft. Im folgenden Beispiel wird er so ändern Sie die aktuelle Kultur der Anwendung entweder auf Englisch (USA) oder, wenn die aktuelle Kultur Englisch (Vereinigte Staaten), Französisch (Frankreich) bereits ist. Der Wert des der CurrentCulture und CurrentUICulture Eigenschaften werden dann angezeigt, um eine TextBlock -Steuerelement namens block. Wie die Ausgabe des Beispiels zeigt, die aktuelle Kultur ändert, wenn die ResourceContext.Languages -Eigenschaft ändert.


ResourceContext context = ResourceManager.Current.DefaultContext;
var list = new List<String>();
if (CultureInfo.CurrentCulture.Name == "en-US")
   list.Add("fr-FR");
else
   list.Add("en-US");

context.Languages = list;
block.Text += String.Format("\nThe current culture is {0}\n",
                            CultureInfo.CurrentCulture);
block.Text += String.Format("The current culture UI is {0}\n",
                            CultureInfo.CurrentUICulture);
// The example displays output like the following if run on a system
// whose current culture is English (United States):
// The current culture is fr-FR
// The current UI culture is fr-FR   


Dim context As ResourceContext = ResourceManager.Current.DefaultContext
Dim list As New List(Of String)()
If CultureInfo.CurrentCulture.Name = "en-US" Then
   list.Add("fr-FR")
Else
   list.Add("en-US")
End If
context.Languages = list
block.Text += String.Format("{1}The current culture is {0}{1}",
                            CultureInfo.CurrentCulture, vbCrLf)
block.Text += String.Format("The current culture UI is {0}\n",
                            CultureInfo.CurrentUICulture)
' The example displays output Like the following if run on a system
' whose current culture Is English (United States):
'    The current culture Is fr-FR
'    The current UI culture Is fr-FR   

Im folgenden Codebeispiel wird veranschaulicht, wie so ändern Sie die CurrentCulture und CurrentUICulture des aktuellen Threads.

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

public class Example
{
   public static void Main()  
   {
      // Display the name of the current thread culture.
      Console.WriteLine("CurrentCulture is {0}.", CultureInfo.CurrentCulture.Name);

      // Change the current culture to th-TH.
      CultureInfo.CurrentCulture = new CultureInfo("th-TH", false);
      Console.WriteLine("CurrentCulture is now {0}.", CultureInfo.CurrentCulture.Name);

      // Display the name of the current UI culture.
      Console.WriteLine("CurrentUICulture is {0}.", CultureInfo.CurrentUICulture.Name);

      // Change the current UI culture to ja-JP.
      CultureInfo.CurrentUICulture = new CultureInfo( "ja-JP", false );
      Console.WriteLine("CurrentUICulture is now {0}.", CultureInfo.CurrentUICulture.Name);
   }
}
// The example displays the following output:
//       CurrentCulture is en-US.
//       CurrentCulture is now th-TH.
//       CurrentUICulture is en-US.
//       CurrentUICulture is now ja-JP.

SecurityPermission

for setting the current culture. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.ControlThread

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: