RegionInfo

本文提供了此 API 参考文档的补充说明。

与类 CultureInfo 不同,RegionInfo 类不表示用户首选项,也不依赖于用户的语言或区域性。

与 RegionInfo 对象关联的名称

RegionInfo 对象的名称是在 ISO 3166 中为国家/地区定义的双字母代码之一。 大小写并不重要。 NameTwoLetterISORegionNameThreeLetterISORegionName 属性会以大写形式返回相应的代码。 有关当前的 RegionInfo 名称列表,请参阅 ISO 3166:国家/地区代码

实例化 RegionInfo 对象

要实例化对象 RegionInfo,请向 RegionInfo(String) 构造函数传递一个双字母地区名称(例如代表美国的“US”)或特定区域性的名称,例如代表英语(美国)的“en-US”。 但建议使用特定的区域性名称,而不是双字母地区名称,因为 RegionInfo 对象不是完全独立于语言的。 多个 RegionInfo 属性(包括 DisplayNameNativeNameCurrencyNativeName)依赖于区域性名称。

以下示例说明了表示比利时的三个对象的 RegionInfo 属性值的差异。 第一个对象仅根据区域名称(BE)实例化,而第二个和第三个则是根据区域性名称(fr-BEnl-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-AZaz-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