Compartilhar via


Classe RegionInfo

Este artigo fornece observações complementares à documentação de referência para essa API.

Ao contrário da classe CultureInfo, a classe RegionInfo não representa as preferências do usuário e não depende da cultura ou do idioma do usuário.

Nomes associados a um objeto RegionInfo

O nome de um objeto RegionInfo é um dos códigos de duas letras definidos na ISO 3166 para país/região. A distinção entre maiúsculas e minúsculas não é relevante. As propriedades Name, TwoLetterISORegionName e ThreeLetterISORegionName retornam os códigos apropriados em letras maiúsculas. Para obter a lista atual dos nomes de RegionInfo, consulte ISO 3166: Códigos de país.

Criar uma instância de um objeto RegionInfo

Para criar uma instância de um objeto RegionInfo, é necessário passar ao construtor RegionInfo(String) um nome de região de duas letras, como "US" para os Estados Unidos, ou o nome de uma cultura específica, como "en-US" para inglês (Estados Unidos). No entanto, recomendamos que você use um nome de cultura específico em vez de um nome de região de duas letras, porque um objeto RegionInfo não é completamente independente do idioma. Várias propriedades RegionInfo, incluindo DisplayName, NativeName e CurrencyNativeName, dependem dos nomes de cultura.

O exemplo a seguir ilustra a diferença nos valores da propriedade RegionInfo para três objetos que representam a Bélgica. O primeiro é instanciado apenas de um nome de região (BE), enquanto o segundo e o terceiro são instanciados dos nomes de cultura (fr-BE para francês (Bélgica) e nl-BE para holandês (Bélgica), respectivamente). O exemplo usa reflexão para recuperar os valores da propriedade de cada objeto 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

Em cenários como o seguinte, use nomes de cultura em vez de nomes de país/região ao criar uma instância de um objeto RegionInfo:

  • Quando o nome do idioma for de importância primordial. Por exemplo, para o nome de cultura es-US, você provavelmente desejará que seu aplicativo exiba "Estados Unidos" em vez de "United States". Usar o nome do país/região (US) sozinho produz "United States" independentemente da linguagem, portanto, você deve trabalhar com o nome da cultura.

  • Quando as diferenças de script devem ser consideradas. Por exemplo, o país/região AZ lida com as culturas do Azerbaijão que têm os nomes az-Latn-AZ e az-Cyrl-AZ, e os scripts latinos e cirílicos podem ser muito diferentes para este país/região.

  • Quando a manutenção dos detalhes for importante. Os valores retornados pelos membros RegionInfo podem ser diferentes dependendo se o objeto RegionInfo foi instanciado usando um nome de cultura ou um nome de região. Por exemplo, a tabela a seguir lista as diferenças nos valores retornados quando um objeto RegionInfo é instanciado usando a região "US", a cultura "en-US" e a cultura "es-US".

    Membro "EUA" "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