CultureInfo 建構函式

定義

初始化 CultureInfo 類別的新執行個體。

多載

CultureInfo(Int32)

根據文化特性識別項所指定的文化特性,初始化 CultureInfo 類別的新執行個體。

CultureInfo(String)

根據名稱所指定的文化特性,初始化 CultureInfo 類別的新執行個體。

CultureInfo(Int32, Boolean)

根據文化特性識別碼所指定的文化特性,以及指定是否要使用來自Windows的使用者選取文化特性設定的值,初始化 類別的新實例 CultureInfo

CultureInfo(String, Boolean)

根據名稱所指定的文化特性,以及指定是否要使用使用者選取的文化特性設定的值,初始化 類別的新實例 CultureInfo Windows。

CultureInfo(Int32)

根據文化特性識別項所指定的文化特性,初始化 CultureInfo 類別的新執行個體。

public:
 CultureInfo(int culture);
public CultureInfo (int culture);
new System.Globalization.CultureInfo : int -> System.Globalization.CultureInfo
Public Sub New (culture As Integer)

參數

culture
Int32

預先定義的 CultureInfo 識別項、現有 CultureInfo 物件的 LCID 屬性,或 Windows 專用文化特性識別項。

例外狀況

culture 小於零。

culture 不是有效的文化特性識別項。 如需詳細資訊,請參閱<呼叫者注意事項>一節。

備註

Windows系統上可用文化特性的預先定義文化特性識別碼會列在 [Windows 所支援語言/區功能變數名稱稱清單中的 語言標籤] 資料行中。 文化名稱遵循 BCP 47 定義的標準。

在大部分情況下, culture 參數會對應至對應的國家語言支援 (NLS) 地區設定識別碼。 參數的值 culture 會成為 LCIDCultureInfo 的 屬性值。

建議您呼叫地區設定名稱建構 CultureInfo.CultureInfo 函式 ,因為地區設定名稱最好是 LCID。 針對自訂地區設定,需要地區設定名稱。

使用者可能會透過主控台的區域和語言選項部分,選擇覆寫與目前Windows文化特性相關聯的某些值。 例如,使用者可能會選擇以不同的格式顯示日期,或使用文化特性預設值以外的貨幣。 如果指定的文化特性識別碼符合目前Windows文化特性的文化特性識別碼,則此建構函式會 CultureInfo 建立使用這些覆寫的 ,包括屬性所 DateTimeFormat 傳回之實例屬性 DateTimeFormatInfo 的使用者設定,以及 屬性所 NumberFormat 傳回之實例的屬性 NumberFormatInfo 。 例如,如果使用者設定與與 (相關聯的 CultureInfo 文化特性不相容,則選取的行事曆不是其中一個 OptionalCalendars) 方法的結果,而且屬性的值是未定義的。

如果指定的文化特性識別碼不符合目前Windows文化特性的識別碼,這個建構函式會建立 , CultureInfo 該建構函式會使用指定文化特性的預設值。

屬性 UseUserOverride 一律設定為 true

例如,假設阿拉伯文 (沙烏地阿拉伯) 是目前的Windows文化特性,而使用者已將行事曆從回曆變更為西曆。

對於使用歐元的文化特性,.NET Framework和Windows XP 會將預設貨幣設定為歐元。 不過,較舊版本的Windows不會。 因此,如果舊版Windows的使用者未透過主控台的區域和語言選項部分變更貨幣設定,貨幣可能不正確。 若要使用貨幣的.NET Framework預設設定,應用程式應該使用 CultureInfo 接受 useUserOverride 參數的建構函式多載,並將它設定為 false

注意

為了回溯相容性,使用 culture 0x0004 或 0x7c04 參數建構的文化特性會分別具有 Namezh-CHTzh-CHS 屬性。 除非您有使用舊名稱的原因,否則您應該改為使用 或 zh-Hant 的目前標準文化特性名稱 zh-Hans 來建構文化特性。

給呼叫者的注意事項

如果 不是有效的文化特性識別碼,.NET Framework 3.5 和舊版會擲回 ArgumentException culture 。 從 .NET Framework 4 開始,此建構函式會擲回 CultureNotFoundException 。 從在 Windows 7 或更新版本上.NET Framework 4 或更新版本下執行的應用程式開始,此方法會嘗試擷取 CultureInfo 識別碼 culture 來自作業系統的物件;如果作業系統不支援該文化特性,方法會 CultureNotFoundException 擲回例外狀況。

在 .NET 6 和更新版本上, CultureNotFoundException 如果應用程式是在啟用全球化-invariant 模式的環境中執行,則會擲回 ,例如,某些 Docker 容器,以及指定非變異文化特性以外的文化特性。

另請參閱

適用於

CultureInfo(String)

根據名稱所指定的文化特性,初始化 CultureInfo 類別的新執行個體。

public:
 CultureInfo(System::String ^ name);
public CultureInfo (string name);
new System.Globalization.CultureInfo : string -> System.Globalization.CultureInfo
Public Sub New (name As String)

參數

name
String

預先定義的 CultureInfo 名稱、現有 CultureInfoName,或 Windows 專用文化特性名稱。 name 不區分大小寫。

例外狀況

name 為 null。

name 不是有效的文化特性名稱。 如需詳細資訊,請參閱<呼叫者注意事項>一節。

範例

下列範例會擷取目前的文化特性。 如果法文 (法國) 文化特性以外的任何專案,它會呼叫 CultureInfo(String) 建構函式來具現化 CultureInfo 代表法國 (法國) 文化特性的物件,並將其設為目前的文化特性。 否則,它會具現化 CultureInfo 代表法文 (盧森堡) 文化特性的物件,使其成為目前的文化特性。

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

備註

如需Windows系統上預先定義的文化特性名稱清單,請參閱 Windows支援的語言/區功能變數名稱稱清單中的語言標籤 資料行。 文化名稱遵循 BCP 47 定義的標準。 此外,從 Windows 10 開始, name 可以是任何有效的 BCP-47 語言標籤。

如果 為 name String.Empty ,則建構函式會建立不變異文化特性的 InvariantCulture 實例;這相當於擷取 屬性的值。

使用者可能會透過主控台的區域和語言選項部分,選擇覆寫與目前Windows文化特性相關聯的某些值。 例如,使用者可能會選擇以不同的格式顯示日期,或使用文化特性預設值以外的貨幣。 如果相關聯的 name 文化特性識別碼符合目前Windows文化特性的文化特性識別碼,此建構函式會 CultureInfo 建立物件,該物件會使用這些覆寫,包括屬性所 DateTimeFormat 傳回之實例屬性 DateTimeFormatInfo 的使用者設定,以及 屬性所 NumberFormat 傳回之實例的屬性 NumberFormatInfo 。 例如,如果使用者設定與 相關聯的 CultureInfo 文化特性不相容,例如,如果選取的行事曆不是 其中 OptionalCalendars 一個 ,則方法的結果和屬性的值是未定義的。

如果相關聯的 name 文化特性識別碼不符合目前Windows文化特性的文化特性識別碼,此建構函式會 CultureInfo 建立物件,該物件會使用指定文化特性的預設值。

屬性 UseUserOverride 一律設定為 true

例如,假設阿拉伯文 (沙烏地阿拉伯) 是目前Windows文化特性,而使用者將行事曆從 Hijri 變更為西曆。

LCIDCultureInfo 的 屬性會設定為與指定名稱相關聯的文化特性識別碼。

對於使用歐元的文化特性,.NET Framework和Windows XP 會將預設貨幣設定為歐元。 不過,舊版的 Windows不會這麼做。 因此,如果舊版Windows的使用者未透過主控台的區域和語言選項部分變更貨幣設定,則貨幣可能不正確。 若要使用貨幣的.NET Framework預設設定,應用程式應該使用 CultureInfo 接受 useUserOverride 參數並將其設定為 false 的建構函式多載。

給呼叫者的注意事項

如果 不是有效的文化特性名稱,.NET Framework 3.5 和舊版會擲回 ArgumentException name 。 從 .NET Framework 4 開始,此建構函式會擲回 CultureNotFoundException 。 從在 Windows 7 或更新版本上.NET Framework 4 或更新版本下執行的應用程式開始,此方法會 CultureInfo 嘗試擷取識別碼 name 來自作業系統的物件;如果作業系統不支援該文化特性,而且如果 name 不是補充或取代文化特性的名稱,則方法會 CultureNotFoundException 擲回例外狀況。

在 .NET 6 和更新版本上, CultureNotFoundException 如果應用程式是在啟用全球化-invariant 模式的環境中執行,則會擲回 ,例如,某些 Docker 容器,以及指定非變異文化特性以外的文化特性。

另請參閱

適用於

CultureInfo(Int32, Boolean)

根據文化特性識別碼所指定的文化特性,以及指定是否要使用來自Windows的使用者選取文化特性設定的值,初始化 類別的新實例 CultureInfo

public:
 CultureInfo(int culture, bool useUserOverride);
public CultureInfo (int culture, bool useUserOverride);
new System.Globalization.CultureInfo : int * bool -> System.Globalization.CultureInfo
Public Sub New (culture As Integer, useUserOverride As Boolean)

參數

culture
Int32

預先定義的 CultureInfo 識別項、現有 CultureInfo 物件的 LCID 屬性,或 Windows 專用文化特性識別項。

useUserOverride
Boolean

true表示只使用使用者選取的文化特性設定 (Windows) ; false 若要使用預設文化特性設定。

例外狀況

culture 小於零。

culture 不是有效的文化特性識別項。 如需詳細資訊,請參閱<呼叫者注意事項>一節。

備註

Windows系統上可用的預先定義文化特性識別碼會列在語言 標籤 資料行中 ,以Windows支援的語言/區功能變數名稱稱清單列出。 文化名稱遵循 BCP 47 定義的標準。

在大部分情況下, culture 參數會對應至對應的國家語言支援 (NLS) 地區設定識別碼。 參數的值 cultureLCID 變成新 CultureInfo 的 屬性值。

建議您呼叫地區設定名稱建構 CultureInfo.CultureInfo 函式 ,因為地區設定名稱最好是 LCID。 針對自訂地區設定,需要地區設定名稱。

使用者可能會透過主控台的區域和語言選項部分,選擇覆寫與目前Windows文化特性相關聯的某些值。 例如,使用者可能會選擇以不同的格式顯示日期,或使用文化特性預設值以外的貨幣。

應用程式通常不應該不允許使用者覆寫。 不允許覆寫本身並不保證資料穩定性。 如需詳細資訊,請參閱部落格文章 文化特性資料不應視為穩定 (,但 Invariant) 除外

UseUserOverride如果 屬性設定 true 為 ,且指定的文化特性識別碼符合目前Windows文化特性的識別碼,則此建構函式會 CultureInfo 建立 使用這些覆寫的 ,包括 屬性所 DateTimeFormat 傳回之實例屬性 DateTimeFormatInfo 的使用者設定,以及 屬性所 NumberFormat 傳回之實例的屬性 NumberFormatInfo 。 例如,如果使用者設定與 相關聯的 CultureInfo 文化特性不相容,例如,如果選取的行事曆不是 其中 OptionalCalendars 一個 ,則方法的結果和屬性的值是未定義的。

否則,這個建構函式會建立 , CultureInfo 以使用指定文化特性的預設值。

參數的值 useUserOverride 會變成 屬性的值 UseUserOverride

例如,假設阿拉伯文 (沙烏地阿拉伯) 是目前Windows文化,而且使用者已將行事曆從 Hijri 變更為西曆。

對於使用歐元的文化特性,.NET Framework和Windows XP 會將預設貨幣設定為歐元。 不過,舊版的 Windows 則不會。 因此,如果舊版Windows的使用者未透過主控台的區域和語言選項部分變更貨幣設定,則貨幣可能不正確。 若要使用貨幣的.NET Framework預設設定,應用程式應該將 useUserOverride 參數設定為 false

注意

為了回溯相容性,使用 culture 0x0004 或 0x7c04 參數建構的文化特性會分別具有 Name zh-CHS 或 zh-CHT 的 屬性。 您應該改為偏好使用 或 zh-Hant 目前的標準文化特性名稱 zh-Hans 來建構文化特性,除非您有使用舊名稱的原因。

給呼叫者的注意事項

如果 不是有效的文化特性識別碼,.NET Framework 3.5 和舊版會擲回 ArgumentException culture 。 從 .NET Framework 4 開始,此建構函式會擲回 CultureNotFoundException 。 從在 Windows 7 或更新版本上.NET Framework 4 或更新版本下執行的應用程式開始,此方法會嘗試擷取 CultureInfo 識別碼 culture 來自作業系統的物件;如果作業系統不支援該文化特性,方法會 CultureNotFoundException 擲回例外狀況。

在 .NET 6 和更新版本上, CultureNotFoundException 如果應用程式是在啟用全球化-invariant 模式的環境中執行,則會擲回 ,例如,某些 Docker 容器,以及指定非變異文化特性以外的文化特性。

另請參閱

適用於

CultureInfo(String, Boolean)

根據名稱所指定的文化特性,以及指定是否要使用使用者選取的文化特性設定的值,初始化 類別的新實例 CultureInfo Windows。

public:
 CultureInfo(System::String ^ name, bool useUserOverride);
public CultureInfo (string name, bool useUserOverride);
new System.Globalization.CultureInfo : string * bool -> System.Globalization.CultureInfo
Public Sub New (name As String, useUserOverride As Boolean)

參數

name
String

預先定義的 CultureInfo 名稱、現有 CultureInfoName,或 Windows 專用文化特性名稱。 name 不區分大小寫。

useUserOverride
Boolean

true表示只使用使用者選取的文化特性設定 (Windows) ; false 若要使用預設文化特性設定。

例外狀況

name 為 null。

name 不是有效的文化特性名稱。 如需詳細資訊,請參閱<呼叫者注意事項>一節。

備註

如需預先定義文化特性名稱的清單,請參閱 Windows支援的語言/區功能變數名稱稱清單中的語言標籤 資料行。 文化名稱遵循 BCP 47 定義的標準。 此外,從 Windows 10 開始, name 可以是任何有效的 BCP-47 語言標籤。

如果 為 name String.Empty ,則建構函式會建立不變異文化特性的 InvariantCulture 實例;這相當於擷取 屬性的值。

使用者可能會透過主控台的區域和語言選項部分,選擇覆寫與目前Windows文化特性相關聯的某些值。 例如,使用者可能會選擇以不同的格式顯示日期,或使用文化特性預設值以外的貨幣。

應用程式通常不應該不允許使用者覆寫。 不允許覆寫本身並不保證資料穩定性。 如需詳細資訊,請參閱部落格文章 文化特性資料不應視為穩定 (,但 Invariant) 除外

UseUserOverride如果 屬性設定 true 為 ,且與指定之文化特性名稱相關聯的文化特性識別碼符合目前Windows文化特性的文化特性識別碼,則此建構函式會 CultureInfo 建立 使用這些覆寫的 ,包括 屬性所傳回之實例屬性 DateTimeFormatInfo 的使用者設定,以及 屬性所 NumberFormat 傳回 DateTimeFormat 之實例的屬性 NumberFormatInfo 。 例如,如果使用者設定與 相關聯的 CultureInfo 文化特性不相容,例如,如果選取的行事曆不是 其中 OptionalCalendars 一個 ,則方法的結果和屬性的值是未定義的。

否則,這個建構函式會建立 , CultureInfo 以使用指定文化特性的預設值。

參數的值 useUserOverride 會變成 屬性的值 UseUserOverride

例如,假設阿拉伯文 (沙烏地阿拉伯) 是目前Windows文化特性,而使用者將行事曆從 Hijri 變更為西曆。

LCIDCultureInfo 的 屬性會設定為與指定名稱相關聯的文化特性識別碼。

對於使用歐元的文化特性,.NET Framework和Windows XP 會將預設貨幣設定為歐元。 不過,舊版Windows不會這麼做。 因此,如果舊版Windows的使用者未透過主控台的區域和語言選項部分變更貨幣設定,貨幣可能不正確。 若要使用貨幣的.NET Framework預設設定,應用程式應將 useUserOverride 參數設定為 false

給呼叫者的注意事項

如果 不是有效的文化特性名稱,.NET Framework 3.5 和舊版會擲回 ArgumentException name 。 從 .NET Framework 4 開始,這個建構函式會 CultureNotFoundException 擲回 。 從在 Windows 7 或更新版本上.NET Framework 4 或更新版本下執行的應用程式開始,此方法會嘗試擷取 CultureInfo 識別碼 name 來自作業系統的物件;如果作業系統不支援該文化特性,而且如果 name 不是補充或取代文化特性的名稱,方法會 CultureNotFoundException 擲回例外狀況。

在 .NET 6 和更新版本上, CultureNotFoundException 如果應用程式是在啟用全球化非變異模式的環境中執行,則會擲回 ,例如,某些 Docker 容器,以及指定非變異文化特性以外的文化特性。

另請參閱

適用於