CultureInfo 建構函式
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
初始化 CultureInfo 類別的新執行個體。
多載
CultureInfo(Int32) |
根據文化特性識別項所指定的文化特性,初始化 CultureInfo 類別的新執行個體。 |
CultureInfo(String) |
根據名稱所指定的文化特性,初始化 CultureInfo 類別的新執行個體。 |
CultureInfo(Int32, Boolean) |
根據文化特性識別碼所指定的文化特性,以及指定是否使用 Windows 中用戶選取的文化特性設定的值,初始化 類別的新實例 CultureInfo 。 |
CultureInfo(String, Boolean) |
根據名稱所指定的文化特性,以及指定是否從 Windows 使用使用者選取的文化特性設定的值,初始化 類別的新實例 CultureInfo 。 |
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
會成為 LCID 新 CultureInfo的屬性值。
建議您呼叫地區設定名稱建構 CultureInfo.CultureInfo函式 ,因為地區設定名稱最好是 LCID。 針對自定義地區設定,需要地區設定名稱。
使用者可能會透過控制面板的區域和語言選項部分,選擇覆寫與目前 Windows 文化特性相關聯的某些值。 例如,使用者可能會選擇以不同的格式顯示日期,或使用文化特性預設值以外的貨幣。 如果指定的文化特性識別碼符合目前 Windows 文化特性的文化特性識別碼,則此建構函式會CultureInfo建立使用這些覆寫的 DateTimeFormatInfo ,包括屬性所DateTimeFormat傳回之實例屬性的用戶設定,以及 屬性所NumberFormat傳回之實例的屬性NumberFormatInfo。 例如,如果用戶設定與與 (相關聯的 CultureInfo 文化特性不相容,則選取的行事曆不是其中一個 OptionalCalendars) 方法的結果,而且屬性的值是未定義的。
如果指定的文化特性標識碼不符合目前 Windows 文化特性的標識碼,這個建構函式會建立 , CultureInfo 使用指定文化特性的預設值。
屬性 UseUserOverride 一律設定為 true
。
例如,假設阿拉伯文 (沙烏地阿拉伯) 是目前的 Windows 文化特性,而且使用者已將行事曆從 Hijri 變更為公曆。
使用
CultureInfo("0x0401")
(文化特性名稱 ar-SA) , Calendar 會設定為 GregorianCalendar (這是使用者設定) ,且 UseUserOverride 設定為true
。使用
CultureInfo("0x041E")
(文化特性名稱 th-TH) , Calendar 會設定為 ThaiBuddhistCalendar (,這是 th-TH) 的預設行事曆,且 UseUserOverride 設定為true
。
對於使用歐元的文化特性,.NET Framework 和 Windows XP 會將預設貨幣設定為歐元。 不過,舊版的 Windows 不會。 因此,如果舊版 Windows 的使用者未透過控制面板的區域和語言選項部分變更貨幣設定,則貨幣可能不正確。 若要使用貨幣的 .NET Framework 預設設定,應用程式應該使用 CultureInfo 接受 useUserOverride
參數的建構函式多載,並將其設定為 false
。
注意
為了回溯相容性,使用 culture
0x0004 或 0x7c04 參數所建構的文化特性會分別具有 Name 或 zh-CHT
的屬性zh-CHS
。 您應該改為偏好使用 或 zh-Hant
目前的標準文化特性名稱zh-Hans
來建構文化特性,除非您有使用舊名稱的原因。
給呼叫者的注意事項
如果 不是有效的文化特性識別碼,.NET Framework 3.5 和舊版會擲回 ArgumentExceptionculture
。 從 .NET Framework 4 開始,這個建構函式會 CultureNotFoundException擲回 。 從在 Windows 7 或更新版本上以 .NET Framework 4 或更新版本執行的應用程式開始,此方法會嘗試擷取 CultureInfo 標識碼 culture
來自作業系統的物件;如果操作系統不支援該文化特性,此方法會 CultureNotFoundException 擲回例外狀況。
在 .NET 6 和更新版本上, CultureNotFoundException 如果應用程式是在啟用全球化非變異模式的環境中執行,則會擲回 ,例如,某些 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 名稱、現有 CultureInfo 的 Name,或 Windows 專用文化特性名稱。
name
不區分大小寫。
例外狀況
name
為 null。
name
不是有效的文化特性名稱。 如需詳細資訊,請參閱<呼叫者注意事項>一節。
範例
下列範例會擷取目前的文化特性。 如果它是法文 (法國) 文化特性以外的任何專案,它會呼叫 CultureInfo(String) 建構函式來具現化 CultureInfo 代表法國 (法國) 文化特性的物件,並使它成為目前的文化特性。 否則,它會具現化 CultureInfo 代表法文 (盧森堡) 文化特性的物件,並使它成為目前的文化特性。
using System;
using System.Globalization;
public class ChangeEx1
{
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 變更為公曆:
- 使用
CultureInfo("ar-SA")
時, Calendar 會設定為 GregorianCalendar (這是使用者設定) ,且 UseUserOverride 設定為true
。 - 使用
CultureInfo("th-TH")
時, Calendar 會設定為 ThaiBuddhistCalendar (,這是 th-TH) 的預設行事曆,且 UseUserOverride 設定為true
。
LCID新 CultureInfo 的 屬性會設定為與指定名稱相關聯的文化特性識別碼。
給呼叫者的注意事項
如果 不是有效的文化特性名稱,.NET Framework 3.5 和舊版會擲回 ArgumentExceptionname
。 從 .NET Framework 4 開始,這個建構函式會 CultureNotFoundException擲回 。 從在 Windows 7 或更新版本上以 .NET Framework 4 或更新版本執行的應用程式開始,此方法會嘗試擷取 CultureInfo 標識碼 name
來自操作系統的物件;如果操作系統不支援該文化特性,而且如果 name
不是增補或取代文化特性的名稱,方法會 CultureNotFoundException 擲回例外狀況。
在 .NET 6 和更新版本上, CultureNotFoundException 如果應用程式是在啟用全球化非變異模式的環境中執行,則會擲回 ,例如,某些 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) 地區設定標識符。 參數的值 culture
會成為 LCID 新 CultureInfo的屬性值。
建議您呼叫地區設定名稱建構 CultureInfo.CultureInfo函式 ,因為地區設定名稱最好是 LCID。 針對自定義地區設定,需要地區設定名稱。
使用者可能會透過控制面板的區域和語言選項部分,選擇覆寫與目前 Windows 文化特性相關聯的某些值。 例如,使用者可能會選擇以不同的格式顯示日期,或使用文化特性預設值以外的貨幣。
應用程式通常不應該不允許使用者覆寫。 不允許覆寫本身並不保證數據穩定性。 如需詳細資訊,請參閱部落格文章 文化特性數據不應視為穩定 (,但非變異) 除外 。
UseUserOverride如果 屬性設定true
為 ,且指定的文化特性標識碼符合目前 Windows 文化特性的標識碼,則此建構函式會CultureInfo建立使用這些覆寫的 ,包括屬性所DateTimeFormat傳回之實例屬性DateTimeFormatInfo的使用者設定,以及 屬性所NumberFormat傳回之實例的屬性NumberFormatInfo。 如果使用者設定與相關聯的 CultureInfo文化特性不相容,例如,如果選取的行事曆不是 其中 OptionalCalendars一個 ,則方法的結果和屬性的值是未定義的。
否則,這個建構函式會建立使用 CultureInfo 指定文化特性之預設值的 。
參數的值 useUserOverride
會變成 屬性的值 UseUserOverride 。
例如,假設阿拉伯文 (沙烏地阿拉伯) 是 Windows 目前的文化特性,而使用者已將行事曆從回歷變更為公曆。
使用
CultureInfo("0x0401", true)
(文化特性名稱 ar-SA) , Calendar 會設定為 GregorianCalendar (這是使用者設定) ,且 UseUserOverride 設定為true
。使用
CultureInfo("0x0401", false)
(文化特性名稱 ar-SA) , Calendar 會設定為 HijriCalendar (這是 ar-SA) 的預設行事曆,且 UseUserOverride 設定為false
。使用
CultureInfo("0x041E", true)
(文化特性名稱 th-TH) , Calendar 會設定為 ThaiBuddhistCalendar (,這是 th-TH) 的預設行事曆,且 UseUserOverride 設定為true
。使用
CultureInfo("0x041E", false)
(文化特性名稱 th-TH) , Calendar 會設定為 ThaiBuddhistCalendar (,這是 th-TH) 的預設行事曆,且 UseUserOverride 設定為false
。
對於使用歐元的文化特性,.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 和舊版會擲回 ArgumentExceptionculture
。 從 .NET Framework 4 開始,這個建構函式會 CultureNotFoundException擲回 。 從在 Windows 7 或更新版本上以 .NET Framework 4 或更新版本執行的應用程式開始,此方法會嘗試擷取 CultureInfo 標識碼 culture
來自作業系統的物件;如果操作系統不支援該文化特性,此方法會 CultureNotFoundException 擲回例外狀況。
在 .NET 6 和更新版本上, CultureNotFoundException 如果應用程式是在啟用全球化非變異模式的環境中執行,則會擲回 ,例如,某些 Docker 容器,以及指定非變異文化特性以外的文化特性。
另請參閱
適用於
CultureInfo(String, Boolean)
根據名稱所指定的文化特性,以及指定是否從 Windows 使用使用者選取的文化特性設定的值,初始化 類別的新實例 CultureInfo 。
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 名稱、現有 CultureInfo 的 Name,或 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建立使用這些覆寫的 ,包括屬性所DateTimeFormat傳回之實例屬性DateTimeFormatInfo的用戶設定,以及 屬性所NumberFormat傳回之實例的屬性NumberFormatInfo。 例如,如果使用者設定與相關聯的 CultureInfo文化特性不相容,例如,如果選取的行事曆不是 其中 OptionalCalendars一個 ,則方法的結果和屬性的值是未定義的。
否則,這個建構函式會建立 , CultureInfo 以使用指定文化特性的預設值。
參數的值 useUserOverride
會變成 屬性的值 UseUserOverride 。
例如,假設阿拉伯文 (沙烏地阿拉伯) 是 Windows 的目前文化特性,而且使用者已將行事曆從 Hijri 變更為公曆。
使用
CultureInfo("ar-SA", true)
時, Calendar 會設定為 GregorianCalendar (,這是使用者設定) ,且 UseUserOverride 設定為true
。使用
CultureInfo("ar-SA", false)
時, Calendar 會設定為 HijriCalendar (,這是 ar-SA) 的預設行事曆,且 UseUserOverride 設定為false
。使用
CultureInfo("th-TH", true)
時, Calendar 會設定為 ThaiBuddhistCalendar (,這是 th-TH) 的預設行事曆,且 UseUserOverride 設定為true
。使用
CultureInfo("th-TH", false)
時, Calendar 會設定為 ThaiBuddhistCalendar (,這是 th-TH) 的預設行事曆,且 UseUserOverride 設定為false
。
LCID新 CultureInfo 的 屬性會設定為與指定名稱相關聯的文化特性識別碼。
對於使用歐元的文化特性,.NET Framework 和 Windows XP 會將預設貨幣設定為歐元。 不過,舊版 Windows 不會這麼做。 因此,如果舊版 Windows 的使用者未透過 [控制面板] 的區域和語言選項部分變更貨幣設定,則貨幣可能不正確。 若要使用貨幣的 .NET Framework 預設設定,應用程式應將 useUserOverride
參數設定為 false
。
給呼叫者的注意事項
如果 不是有效的文化特性名稱,.NET Framework 3.5 和舊版會擲回 ArgumentExceptionname
。 從 .NET Framework 4 開始,此建構函式會擲回 CultureNotFoundException。 從在 Windows 7 或更新版本上 .NET Framework 4 或更新版本下執行的應用程式開始,此方法會嘗試擷取 CultureInfo 標識碼來自 name
操作系統的物件;如果操作系統不支援該文化特性,而且如果 name
不是增補或取代文化特性的名稱,方法會 CultureNotFoundException 擲回例外狀況。
在 .NET 6 和更新版本上, CultureNotFoundException 如果應用程式是在啟用全球化-invariant 模式的環境中執行,則會擲回 ,例如,某些 Docker 容器,以及指定非變異文化特性以外的文化特性。