(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

CultureInfo.CurrentCulture-Eigenschaft

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

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

public static CultureInfo CurrentCulture { get; }

Eigenschaftswert

Typ: System.Globalization.CultureInfo
Ein Objekt, das die vom aktuellen Thread verwendete Kultur darstellt.

Die Kultur ist eine Eigenschaft des gerade ausgeführten Threads. Diese schreibgeschützte Eigenschaft entspricht dem Abrufen des CultureInfo-Objekts entsprechend, das durch die Thread.CurrentCulture-Eigenschaft zurückgegeben wird. Das CultureInfo-Objekt, das durch diese Eigenschaft und die zugehörigen Objekte zurückgegeben wird, wird bestimmt das Standardformat für Datumsangaben, Uhrzeitangaben, Zahlen, Währungsangaben, die Sortierreihenfolge für Text, die umkleidenden Konventionen sowie die Zeichenfolgenvergleiche.

Wie die Kultur eines Threads bestimmt wird

Wenn ein Thread gestartet wird, wird seine Kultur zuerst bestimmt, wie folgt:

  • Durch das Abrufen der Kultur, die von der DefaultThreadCurrentCulture-Eigenschaft in der Anwendungsdomäne festgelegt wird, in der der Thread ausgeführt wird, wenn der Eigenschaftswert nicht null ist.

  • Durch Aufrufen der GetUserDefaultLocaleName-Funktion von Windows.

Beachten Sie, dass, wenn Sie festgelegt einer bestimmten Kultur, die zu der System-installierten Kultur oder der bevorzugten Kultur des Benutzers übereinstimmt und Ihre Anwendung mehrere Threads beginnt, die aktuelle Kultur dieser Threads die Kultur ist, die von der Funktion GetUserDefaultLocaleName zurückgegeben wird, es sei denn, eine Kultur die DefaultThreadCurrentCulture-Eigenschaft in der Anwendungsdomäne zuweisen, in der der Thread ausgeführt wird.

Weitere Informationen darüber, wie die Kultur eines Threads bestimmt wird, finden Sie im Abschnitt "Kultur und Threads" auf der CultureInfo-Referenzseite.

Explizites Festlegen der CurrentCulture-Eigenschaft

So ändern Sie die Kultur, die durch einen vorhandenen Thread verwendet wird, legen Sie die Eigenschaft Thread.CurrentCulture auf die neue Kultur. Wenn Sie explizit die Kultur eines Threads auf diese Weise ändern, besteht diese Änderung beibehalten, wenn der Thread Anwendungsdomänengrenzen überschreitet. Im folgenden Beispiel wird die aktuelle Threadkultur zu den Holländern die (Niederlande). Es wird auch deutlich, dass, wenn der aktuelle Thread Anwendungsdomänengrenzen überschreitet, seine aktuelle Kultur geändert 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";
      Thread.CurrentThread.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


HinweisHinweis

Das Ändern der Kultur, indem die Thread.CurrentThread-Eigenschaft verwendet, erfordert eine SecurityPermission Berechtigung mit dem Wert ControlThread. Das Ändern von Threads erweist sich aufgrund des mit Threads verbundenen Sicherheitsstatus als gefährlich. Deshalb sollte diese Berechtigung ausschließlich für vertrauenswürdigen Code erteilt werden, und auch dies nur bei Bedarf. Sie können teilweise vertrauenswürdigem Code nicht ändern.

Ab .NET Framework 4, können Sie die aktuelle Threadkultur auf jedes explizit ändern eine bestimmte Kultur (z Französisch (Kanada)) oder eine neutrale Kultur (z Französisch). Wenn ein CultureInfo-Objekt eine neutrale Kultur darstellt, werden die Werte von CultureInfo-Eigenschaften wie Calendar, CompareInfo, DateTimeFormat, NumberFormat und TextInfo die entsprechende Kultur, die die neutralen Kultur zugeordnet ist. Beispielsweise ist die dominante Kultur für die englische neutrale Kultur Englisch (USA); die dominante Kultur für die deutsche Kultur ist Deutsch (Deutschland). Das folgende Beispiel veranschaulicht den Unterschied in der Formatierung, wenn der aktuelle Thread auf eine bestimmte Kultur, Französisch (Kanada) und eine neutrale Kultur festgelegt wird, Französisch.


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

public class Example
{
   public static void Main()
   {
      double value = 1634.92;
      Thread.CurrentThread.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 €


Sie können die Thread.CurrentCulture-Eigenschaft zusammen mit der HttpRequest.UserLanguages-Eigenschaft verwenden, um die CurrentCulture-Eigenschaft einer ASP.NET-Anwendung auf die bevorzugte Kultur des Benutzers festzulegen, wie im folgenden Beispiel veranschaulicht.


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


Die aktuellen Kultur- und Benutzer-Überschreibungen

Windows ermöglicht es Benutzern, die die Standardeigenschaftswerte CultureInfo des Objekts und der zugehörigen Objekte zu überschreiben, indem Sie Regions- und Sprachoptionen in der Systemsteuerung verwendet. Das CultureInfo-Objekt, das durch die CurrentCulture-Eigenschaft zurückgegeben wird, gibt diese benutzerdefinierte Überschreibungen in den folgenden Fällen:

  • Wenn die aktuelle Threadkultur implizit von der Windows-Funktion GetUserDefaultLocaleName festgelegt wird.

  • Wenn die aktuelle Threadkultur, die durch die Eigenschaft DefaultThreadCurrentCulture definiert wird, zur Systemkultur der aktiven Fenster entspricht.

  • Wenn die aktuelle Threadkultur explizit auf eine Kultur festgelegt wird, die durch die CreateSpecificCulture-Methode zurückgegeben wird und diese Kultur zur Systemkultur der aktiven Fenster entspricht.

  • Wenn die aktuelle Threadkultur explizit auf eine Kultur festgelegt wird, die vom CultureInfo(String)-Konstruktor instanziiert und diese Kultur zur Systemkultur der aktiven Fenster entspricht.

In einigen Fällen besonders für Serveranwendungen, kann das Festlegen der aktuellen Kultur auf ein CultureInfo-Objekt, das benutzerdefinierte Überschreibungen widergespiegelt, unerwünscht. Stattdessen können Sie die aktuelle Threadkultur auf ein CultureInfo-Objekt festlegen, das keine benutzerdefinierte Überschreibungen in der wie folgt angegeben:

Im folgenden Codebeispiel wird das Ändern von CurrentCulture und CurrentUICulture des aktuellen Threads veranschaulicht.


using System;
using System.Globalization;
using System.Security.Permissions;
using System.Threading;

[assembly:SecurityPermission( SecurityAction.RequestMinimum, ControlThread = true )]
public class SamplesCultureInfo  {

   public static void Main()  {

      // Displays the name of the CurrentCulture of the current thread.
      Console.WriteLine( "CurrentCulture is {0}.", CultureInfo.CurrentCulture.Name );

      // Changes the CurrentCulture of the current thread to th-TH.
      Thread.CurrentThread.CurrentCulture = new CultureInfo( "th-TH", false );
      Console.WriteLine( "CurrentCulture is now {0}.", CultureInfo.CurrentCulture.Name );

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

      // Changes the CurrentUICulture of the current thread to ja-JP.
      Thread.CurrentThread.CurrentUICulture = new CultureInfo( "ja-JP", false );
      Console.WriteLine( "CurrentUICulture is now {0}.", CultureInfo.CurrentUICulture.Name );

   }

}

/*
This code produces the following output, if the ControlThread permission is granted (for example, if this code is run from the local drive).

CurrentCulture is en-US.
CurrentCulture is now th-TH.
CurrentUICulture is en-US.
CurrentUICulture is now ja-JP.

*/


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft