CultureInfo 构造函数

定义

初始化 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 将成为 LCIDCultureInfo的 属性的值。

建议调用区域设置名称构造函数 CultureInfo.CultureInfo,因为区域设置名称优于 LCID。 对于自定义区域设置,需要区域设置名称。

用户可以选择通过控制面板的区域和语言选项部分替代与 Windows 的当前区域性关联的一些值。 例如,用户可能选择以不同的格式显示日期,或使用区域性的默认货币以外的货币。 如果指定的区域性标识符与当前 Windows 区域性的区域性标识符匹配,则此构造函数将创建一个 CultureInfo ,它使用这些替代,包括 属性返回DateTimeFormatDateTimeFormatInfo实例属性的用户设置,以及 属性返回NumberFormatNumberFormatInfo实例的属性。 如果用户设置与 (关联的 CultureInfo 区域性不兼容,例如,如果所选日历不是 OptionalCalendars) 则方法的结果和属性的值未定义。

如果指定的区域性标识符与当前 Windows 区域性的标识符不匹配,则此构造函数将创建一个 CultureInfo ,它使用指定区域性的默认值。

属性 UseUserOverride 始终设置为 true

例如,假设阿拉伯语 (沙特阿拉伯) 是当前的 Windows 区域性,并且用户已将日历从回历更改为公历。

对于使用欧元的区域,.NET Framework 和 Windows XP 将默认货币设置为欧元。 但是,较旧版本的 Windows 不会。 因此,如果较旧版本的 Windows 用户未通过控制面板的区域和语言选项部分更改货币设置,则货币可能不正确。 若要使用货币.NET Framework默认设置,应用程序应使用CultureInfo接受 useUserOverride 参数并将其设置为 false的构造函数重载。

注意

为了向后兼容,使用 culture 0x0004 或 0x7c04 参数构造的区域性将分别具有 Namezh-CHT属性zh-CHS。 应改为使用 或 zh-Hantzh-Hans当前标准区域性名称构造区域性,除非有理由使用旧名称。

调用方说明

.NET Framework 3.5 及更早版本如果 culture 不是有效的区域性标识符,则会引发 ArgumentException 。 从 .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 名称、现有 CultureInfoName 或仅 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 语言标记。

如果 nameString.Empty,则构造函数创建固定区域性的实例;这等效于检索 属性的值 InvariantCulture

用户可以选择通过控制面板的区域和语言选项部分替代与 Windows 的当前区域性关联的一些值。 例如,用户可能选择以不同的格式显示日期,或使用区域性的默认货币以外的货币。 如果与 关联的name区域性标识符与当前 Windows 区域性的区域性标识符匹配,则此构造函数将创建一个CultureInfo使用这些替代的对象,包括属性返回DateTimeFormatDateTimeFormatInfo实例属性的用户设置,以及 属性返回NumberFormatNumberFormatInfo实例的属性。 如果用户设置与 关联的 CultureInfo区域性不兼容,例如,如果所选日历不是 之 OptionalCalendars一,则方法的结果和属性的值是未定义的。

如果与 name 关联的区域性标识符与当前 Windows 区域性的区域性标识符不匹配,则此构造函数将创建一个 CultureInfo 对象,该对象使用指定区域性的默认值。

属性 UseUserOverride 始终设置为 true

例如,假设阿拉伯语 (沙特阿拉伯) 是 Windows 的当前区域性,并且用户将日历从回历更改为公历:

LCID new CultureInfo 的 属性设置为与指定名称关联的区域性标识符。

调用方说明

如果 name 不是有效的区域性名称,ArgumentException.NET Framework 3.5 及更早版本会引发 。 从 .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 将成为 LCIDCultureInfo的 属性的值。

建议调用区域设置名称构造函数 CultureInfo.CultureInfo,因为区域设置名称优于 LCID。 对于自定义区域设置,需要区域设置名称。

用户可以选择通过控制面板的区域和语言选项部分替代与 Windows 的当前区域性关联的一些值。 例如,用户可能选择以不同的格式显示日期,或使用区域性的默认货币以外的货币。

应用程序通常不应禁止用户替代。 不允许替代本身并不能保证数据稳定性。 有关详细信息,请参阅博客文章 Culture data be stable (except for Invariant)

如果 属性UseUserOverride设置为 true ,并且指定的区域性标识符与当前 Windows 区域性的标识符匹配,则此构造函数将创建一个 CultureInfo ,它使用这些替代,包括 属性返回DateTimeFormatDateTimeFormatInfo实例属性的用户设置,以及 属性返回NumberFormatNumberFormatInfo实例的属性。 如果用户设置与 关联的 CultureInfo区域性不兼容,例如,如果所选日历不是 之 OptionalCalendars一,则方法的结果和属性的值是未定义的。

否则,此构造函数将创建一个 CultureInfo ,它使用指定区域性的默认值。

参数的值 useUserOverride 将成为 属性的值 UseUserOverride

例如,假设阿拉伯语 (沙特阿拉伯) 是 Windows 的当前区域性,并且用户已将日历从回历更改为公历。

对于使用欧元的区域,.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 及更早版本如果 culture 不是有效的区域性标识符,则会引发 ArgumentException 。 从 .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 名称、现有 CultureInfoName 或仅 Windows 区域性名称。 name 不区分大小写。

useUserOverride
Boolean

true 使用用户选择的区域性设置 (仅限 Windows) ; false 若要使用默认区域性设置,则为 。

例外

name 为 null。

name 不是有效的区域性名称。 有关详细信息,请参阅“调用方备注”部分。

注解

有关预定义区域性名称的列表,请参阅 Windows 支持的语言/区域名称列表中的“语言标记”列。 列名遵循 BCP 47 定义的标准。 此外,从 Windows 10 开始, name 可以是任何有效的 BCP-47 语言标记。

如果 nameString.Empty,则构造函数创建固定区域性的实例;这等效于检索 属性的值 InvariantCulture

用户可以选择通过控制面板的区域和语言选项部分替代与当前 Windows 区域性关联的一些值。 例如,用户可能选择以不同的格式显示日期,或使用区域性的默认货币以外的货币。

应用程序通常不应禁止用户替代。 不允许替代本身并不能保证数据稳定性。 有关详细信息,请参阅博客文章 Culture data be stable (except for Invariant)

UseUserOverride如果 属性设置为 true ,并且与指定区域性名称关联的区域性标识符与当前 Windows 区域性的区域性标识符匹配,则此构造函数将创建一个 CultureInfo ,它使用这些替代,包括属性返回DateTimeFormatDateTimeFormatInfo实例属性的用户设置,以及属性返回NumberFormatNumberFormatInfo实例的属性。 如果用户设置与 关联的 CultureInfo区域性不兼容,例如,如果所选日历不是 之 OptionalCalendars一,则方法的结果和属性的值是未定义的。

否则,此构造函数将创建一个 CultureInfo ,它使用指定区域性的默认值。

参数的值 useUserOverride 将成为 属性的值 UseUserOverride

例如,假设阿拉伯语 (沙特阿拉伯) 是 Windows 的当前区域性,并且用户将日历从回历更改为公历。

LCID new CultureInfo 的 属性设置为与指定名称关联的区域性标识符。

对于使用欧元的区域,.NET Framework和 Windows XP 将默认货币设置为欧元。 但是,较旧版本的 Windows 不会这样做。 因此,如果较旧版本的 Windows 用户未通过控制面板的区域和语言选项部分更改货币设置,则货币可能不正确。 若要使用货币.NET Framework默认设置,应用程序应将 useUserOverride 参数设置为 false

调用方说明

如果 name 不是有效的区域性名称,ArgumentException.NET Framework 3.5 及更早版本会引发 。 从 .NET Framework 4 开始,此构造函数引发 CultureNotFoundException。 从在 Windows 7 或更高版本的 .NET Framework 4 或更高版本下运行的应用开始, 方法尝试检索CultureInfo标识符来自操作系统的对象name;如果操作系统不支持该区域性,并且如果 name 不是补充区域性或替换区域性的名称,该方法将CultureNotFoundException引发异常。

在 .NET 6 及更高版本上, CultureNotFoundException 如果应用在启用了全球化固定模式的环境中运行(例如,某些 Docker 容器)和指定固定区域性以外的区域性,则会引发 。

另请参阅

适用于