Класс RegionInfo

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

CultureInfo В отличие от класса, RegionInfo класс не представляет пользовательских предпочтений и не зависит от языка пользователя или языка и региональных параметров.

Имена, связанные с объектом RegionInfo

Имя RegionInfo объекта является одним из двухбуквовых кодов, определенных в ISO 3166 для страны или региона. Дело не является значительным. TwoLetterISORegionNameСвойства Nameи ThreeLetterISORegionName свойства возвращают соответствующие коды в верхнем регистре. Текущий RegionInfo список имен см. в формате ISO 3166: коды стран.

Создание экземпляра объекта RegionInfo

Чтобы создать RegionInfo экземпляр объекта, вы передаете RegionInfo(String) конструктору имя региона двух букв, например "US" для США, или имя определенного языка и региональных параметров, например "en-US" для английского языка (США). Однако рекомендуется использовать определенное имя языка и региональных параметров вместо двух букв, так как RegionInfo объект не является полностью независимым от языка. Несколько RegionInfo свойств, включая DisplayNameNativeNameи 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 имени языка и региональных параметров вы, вероятно, хотите, чтобы ваше приложение отображалось "EstadosPoints" вместо "США". Использование имени страны или региона (US) предоставляет "США" независимо от языка, поэтому вместо этого следует работать с именем языка и региональных параметров.

  • Если необходимо учитывать различия сценариев. Например, страна или регион AZ имеет дело с азербайджанскими культурами, которые имеют имена az-Latn-AZ и az-Cyrl-AZ, а латинские и кирилличные скрипты могут быть очень разными для этой страны или региона.

  • Когда важно обслуживание деталей. Значения, возвращаемые RegionInfo элементами, могут отличаться в зависимости от того, был ли RegionInfo объект создан с помощью имени языка и региональных параметров или имени региона. Например, в следующей таблице перечислены различия в возвращаемых значениях при создании экземпляра RegionInfo объекта с помощью региона US, языка и региональных параметров en-US и региональных es-US.

    Элемент "US" "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