Clase RegionInfo

En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

A diferencia de la clase CultureInfo, la clase RegionInfo no representa las preferencias del usuario y no depende del idioma o la referencia cultural del usuario.

Nombres asociados a un objeto RegionInfo

El nombre de un objeto RegionInfo es uno de los códigos de dos letras definidos en ISO 3166 para el país o región. El caso no es significativo. Las propiedades Name, TwoLetterISORegionName, y ThreeLetterISORegionName devuelven los códigos adecuados en mayúsculas. Para obtener la lista actual de nombres RegionInfo, consulte ISO 3166: códigos de país .

Creación de instancias de un objeto RegionInfo

Para crear una instancia de un objetoRegionInfo, pase el constructor RegionInfo(String) un nombre de región de dos letras, como "US" para Estados Unidos o el nombre de una referencia cultural específica, como "en-US" para inglés (Estados Unidos). Sin embargo, se recomienda usar un nombre de referencia cultural específico en lugar de un nombre de región de dos letras, ya que un objeto RegionInfo no es completamente independiente del lenguaje. Varias de las RegionInfo propiedades, como DisplayName, NativeName, y CurrencyNativeName, dependen de los nombres de referencia cultural.

En el ejemplo siguiente se muestra la diferencia en los valores de propiedad RegionInfo de tres objetos que representan Bélgica. El primero solo se crea una instancia de un nombre de región (BE), mientras que el segundo y el tercero se crean instancias de los nombres de referencia cultural (fr-BE para francés (Bélgica) y nl-BE para neerlandés (Bélgica), respectivamente). En el ejemplo se usa la reflexión para recuperar los valores de propiedad de cada objetoRegionInfo.

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

En escenarios como los siguientes, use nombres de referencia cultural en lugar de nombres de país o región al crear una instancia de un objetoRegionInfo:

  • Cuando el nombre del idioma es de importancia principal. Por ejemplo, para el nombre de la referencia cultural es-US, probablemente querrá que la aplicación muestre "Estados Unidos" en lugar de "Norteamérica". El uso del nombre de país o región (US) solo produce "Estados Unidos" independientemente del idioma, por lo que debe trabajar con el nombre de la referencia cultural en su lugar.

  • Cuando se deben tener en cuenta las diferencias de script. Por ejemplo, el país o región AZ se ocupa de las culturas Azerbaiyanas que tienen los nombres az-Latn-AZ y az-Cyrl-AZ, y los scripts latinos y Cirílicos pueden ser muy diferentes para este país o región.

  • Cuando el mantenimiento de detalle es importante. Los valores devueltos por los miembros RegionInfo pueden diferir en función de si se ha creado una instancia del objeto RegionInfo mediante un nombre de referencia cultural o un nombre de región. Por ejemplo, en la tabla siguiente se enumeran las diferencias en los valores devueltos cuando se ha creado una instancia de un objeto RegionInfo mediante la región "US", la referencia cultural "en-US" y la referencia cultural "es-US".

    Member "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