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

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

与 RegionInfo 对象关联的名称

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

实例化 RegionInfo 对象

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

以下示例说明了表示比利时的三个对象的属性值的差异 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”而不是“United States”。 仅使用国家/地区名称(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