CultureInfo 构造函数

定义

初始化 CultureInfo 类的新实例。

重载

CultureInfo(Int32)

根据区域性标识符指定的区域性初始化 CultureInfo 类的新实例。

CultureInfo(String)

根据由名称指定的区域性初始化 CultureInfo 类的新实例。

CultureInfo(Int32, Boolean)

基于区域性标识符指定的区域性以及指定是否使用用户从区域性标识符中选定的区域性设置的值初始化 类的新 CultureInfo Windows。

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 将成为新 LCID 的 属性的值 CultureInfo

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

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

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

UseUserOverride属性始终设置为 true

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

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

备注

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

调用方说明

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

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

另请参阅

适用于

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 支持的语言/区域名称列表中的 Language 标记Windows。 列名遵循 BCP 47 定义的标准。 此外,从 Windows 10开始, name 可以是任何有效的 BCP-47 语言标记。

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

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

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

UseUserOverride属性始终设置为 true

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

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

对于使用欧洲货币的区域性,.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 及更高版本上,如果应用在启用了全球化固定模式的环境中(例如,某些 Docker 容器)运行,并且指定了非固定区域性的区域性,则会引发 。 CultureNotFoundException

另请参阅

适用于

CultureInfo(Int32, Boolean)

基于区域性标识符指定的区域性以及指定是否使用用户从区域性标识符中选定的区域性设置的值初始化 类的新 CultureInfo Windows。

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区域性和语言选项部分控制面板。 例如,用户可能会选择以其他格式显示日期,或者使用区域性的默认货币。

应用程序通常不应禁止用户重写。 禁止重写本身不能保证数据稳定性。 有关详细信息,请参阅博客文章区域性数据不应被视为稳定 (,但固定 ) 。

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

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

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

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

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

备注

为了向后兼容,使用 0x0004 或 0x7c04 参数构造的区域性将分别具有 culture 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 及更高版本上,如果应用在启用了全球化固定模式的环境中(例如,某些 Docker 容器)运行,并且指定了非固定区域性的区域性,则会引发 。 CultureNotFoundException

另请参阅

适用于

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与当前区域性关联的一些控制面板。 例如,用户可能会选择以其他格式显示日期,或者使用区域性的默认货币。

应用程序通常不应禁止用户重写。 禁止重写本身不能保证数据稳定性。 有关详细信息,请参阅博客文章区域性数据不应被视为稳定 (,但固定 ) 。

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

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

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

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

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

对于使用欧洲货币的区域性,.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 及更高版本上,如果应用在启用了全球化固定模式的环境中(例如,某些 Docker 容器)运行,并且指定了非固定区域性的区域性,则会引发 。 CultureNotFoundException

另请参阅

适用于