匯出 (0) 列印
全部展開
本文章是由機器翻譯。 將指標移到文章內的文字上方即可查看原文。 其他資訊。
譯文
原文

CultureInfo.CurrentCulture 屬性

取得 CultureInfo 物件,表示目前執行緒使用的文化特性。

命名空間:  System.Globalization
組件:  mscorlib (在 mscorlib.dll 中)

public static CultureInfo CurrentCulture { get; }

屬性值

類型:System.Globalization.CultureInfo
物件,表示目前執行緒使用的文化特性。

文化特性為執行中執行緒的屬性。 這個唯讀屬性擷取與 Thread.CurrentCulture 屬性所傳回的 CultureInfo 物件。 此屬性及其相關物件傳回的 CultureInfo 物件會決定日期、時間、數字、貨幣值、文字排序次序,大小寫慣例和字串比較的預設格式。

執行緒的文化特性決定方式

當執行緒啟動時,原本判斷其文化特性如下:

  • DefaultThreadCurrentCulture 屬性指定應用程式定義域中執行緒的擷取文化特性,如果屬性值不是 null

  • 藉由呼叫 Windows GetUserDefaultLocaleName 函式。

請注意,如果您是使用系統安裝的文化特性或使用者慣用的文化特性不同集合特定文化特性和由 GetUserDefaultLocaleName 函式傳回的應用程式啟動多個執行緒,這些執行緒目前的文化特性會與文化特性,除非您要指派文化特性至執行緒執行的應用程式定義域的 DefaultThreadCurrentCulture 屬性。

如需執行緒的文化特性方式的詳細資訊來決定的,請參閱 CultureInfo 主題的文化特性和執行緒參考頁。

明確設定 CurrentCulture 屬性

改變現有執行緒使用的文化特性,請將 Thread.CurrentCulture 屬性設定為新的文化特性。 如果您以這種方式明確變更執行緒的文化特性,如果執行緒跨越應用程式定義域界限則該變更會保存。 下列範例會變更目前執行緒文化特性到荷蘭文 (荷蘭文)。 它也表示,在目前執行緒跨越應用程式定義域界限時,其目前的文化特性保持不變。


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


注意事項注意事項

以下是使用 Thread.CurrentThread 屬性中的文化特性要求ControlThread 值集合中的 SecurityPermission 使用權限。 因為安全狀態與執行緒息息相關,操作執行緒會很危險。 因此,這個使用權限應該只能指定給可靠的程式碼,而且也只有在必要的時候。 您不可以在非完全信任程式碼中變更執行緒的文化特性。

從 .NET Framework 4開始,您可以明確地將目前執行緒文化特性變更為特定文化特性 (例如法文 (加拿大)) 或中性文化特性 (例如法文)。 在與中性文化特性的 CultureInfo 物件表示中性文化特性時, CultureInfo 屬性的值,例如 CalendarCompareInfoDateTimeFormatNumberFormatTextInfo 反映特定文化特性。 例如,英文中性文化特性的主要文化特性是英文 (美國);德國文化特性的主要文化特性(德文)。 下列範例顯示格式化的差異,以及在目前執行緒設為特定的文化特性、法文 (加拿大) 和中性文化特性,法文。


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 €


如下列範例所示,您可以與 HttpRequest.UserLanguages 屬性一起使用 Thread.CurrentCulture 屬性來設定 ASP.NET 應用程式的 CurrentCulture 屬性設定為使用者慣用的文化特性。


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


目前的文化特性和使用者覆寫

您可以使用控制台的區域及語言選項,Windows允許使用者覆寫 CultureInfo 物件及其相關物件的標準屬性值。 CurrentCulture 屬性所傳回的 CultureInfo 物件在下列情況下會反映這些使用者覆寫:

  • 如果目前執行緒文化特性是由 Windows GetUserDefaultLocaleName 函式隱含地設定。

  • 如果 DefaultThreadCurrentCulture 屬性中定義之目前執行緒文化特性對應至目前 Windows 文化特性。

  • 如果目前執行緒文化特性明確設定為 CreateSpecificCulture 方法所傳回的文化特性,而且該文化特性與目前 Windows 文化特性。

  • 如果目前執行緒文化特性明確設定為 CultureInfo(String) 建構者所傳回的文化特性,而且該文化特性與目前 Windows 文化特性。

在某些情況下,尤其是伺服器應用程式,設定目前文化特性為應用程式覆寫的 CultureInfo 物件可能會有使用者不想要有的行為。 相反地,您可以設定目前執行緒文化特性到不會以下列方式反映使用者覆寫的 CultureInfo 物件:

下列程式碼範例會示範如何變更目前執行緒的 CurrentCultureCurrentUICulture


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

支援版本:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

支援版本:4、3.5 SP1

可攜式類別庫

支援版本:可攜式類別庫

適用於 Windows 市集應用程式的 .NET

支援版本:Windows 8

適用於 Windows Phone 應用程式的 .NET

支援版本: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 (不支援伺服器核心角色), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心角色,不支援 Itanium)

.NET Framework 並不支援各種平台的所有版本。如需支援版本的清單,請參閱.NET Framework 系統需求

社群新增項目

新增
顯示:
© 2014 Microsoft