RegionInfo 类
本文提供了此 API 参考文档的补充说明。
与类 CultureInfo 不同,RegionInfo 类不表示用户首选项,也不依赖于用户的语言或区域性。
与 RegionInfo 对象关联的名称
RegionInfo 对象的名称是在 ISO 3166 中为国家/地区定义的双字母代码之一。 大小写并不重要。 Name、TwoLetterISORegionName 和 ThreeLetterISORegionName 属性会以大写形式返回相应的代码。 有关当前的 RegionInfo 名称列表,请参阅 ISO 3166:国家/地区代码。
实例化 RegionInfo 对象
要实例化对象 RegionInfo,请向 RegionInfo(String) 构造函数传递一个双字母地区名称(例如代表美国的“US”)或特定区域性的名称,例如代表英语(美国)的“en-US”。 但建议使用特定的区域性名称,而不是双字母地区名称,因为 RegionInfo 对象不是完全独立于语言的。 多个 RegionInfo 属性(包括 DisplayName、NativeName 和 CurrencyNativeName)依赖于区域性名称。
以下示例说明了表示比利时的三个对象的 RegionInfo 属性值的差异。 第一个对象仅根据区域名称(BE
)实例化,而第二个和第三个则是根据区域性名称(fr-BE
和 nl-BE
分别代表法语 [比利时] 和荷兰语 [比利时])实例化的。 该示例使用反射来检索每个 RegionInfo 对象的属性值。
using System;
using System.Globalization;
using System.Reflection;
public class Example
{
public static void Main()
{
// Instantiate three Belgian RegionInfo objects.
RegionInfo BE = new RegionInfo("BE");
RegionInfo frBE = new RegionInfo("fr-BE");
RegionInfo nlBE = new RegionInfo("nl-BE");
RegionInfo[] regions = { BE, frBE, nlBE };
PropertyInfo[] props = typeof(RegionInfo).GetProperties(BindingFlags.Instance | BindingFlags.Public);
Console.WriteLine("{0,-30}{1,18}{2,18}{3,18}\n",
"RegionInfo Property", "BE", "fr-BE", "nl-BE");
foreach (var prop in props)
{
Console.Write("{0,-30}", prop.Name);
foreach (var region in regions)
Console.Write("{0,18}", prop.GetValue(region, null));
Console.WriteLine();
}
}
}
// The example displays the following output:
// RegionInfo Property BE fr-BE nl-BE
//
// Name BE fr-BE nl-BE
// EnglishName Belgium Belgium Belgium
// DisplayName Belgium Belgium Belgium
// NativeName België Belgique België
// TwoLetterISORegionName BE BE BE
// ThreeLetterISORegionName BEL BEL BEL
// ThreeLetterWindowsRegionName BEL BEL BEL
// IsMetric True True True
// GeoId 21 21 21
// CurrencyEnglishName Euro Euro Euro
// CurrencyNativeName euro euro euro
// CurrencySymbol € € €
// ISOCurrencySymbol EUR EUR EUR
在如下所示的方案中,在实例化 RegionInfo 对象时使用了区域性名称而不是国家/地区名称:
在语言名称非常重要的情况下。 例如,对于
es-US
区域性名称,你可能希望应用程序显示“Estados Unidos”而不是“美国”。 仅使用国家/地区名称(US
)将会生成“美国”,而不会考虑语言如何,因此应改用区域性名称。在必须考虑脚本差异的情况下。 例如,国家/地区
AZ
会处理具有名称az-Latn-AZ
和az-Cyrl-AZ
的阿塞拜疆区域性,而拉丁文和西里尔文脚本对于此国家/地区可能会差异很大。在维护详细信息非常重要的情况下。 RegionInfo 成员返回的值可能有所不同,具体取决于是使用区域性名称还是地区名称实例化 RegionInfo 对象。 例如,下表列出了在使用“US”区域、“en-US”区域性和“es-US”区域性实例化 RegionInfo 对象时返回值的差异。
成员 美国 “en-US” “es-US” CurrencyNativeName US Dollar
US Dollar
Dólar de EE.UU.
Name US
en-US
es-US
NativeName United States
United States
Estados Unidos
ToString US
en-US
es-US