Classe RegionInfo

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

Contrairement à la classe CultureInfo, la classe RegionInfo ne représente pas les préférences utilisateur et ne dépend pas de la langue ou de la culture de l’utilisateur.

Noms associés à un objet RegionInfo

Le nom d’un objet RegionInfo est l’un des codes à deux lettres définis dans l’ISO 3166 pour le pays/la région. La casse n’est pas importante. Les propriétés Name, TwoLetterISORegionName et ThreeLetterISORegionName retournent les codes appropriés (en) capitales. Pour obtenir la liste actuelle des noms RegionInfo, consultez ISO 3166 : codes pays.

Instancier un objet RegionInfo

Pour instancier un objet RegionInfo, vous transmettez au constructeur RegionInfo(String) un nom de région à deux lettres, tel que « US » pour les États-Unis, ou le nom d’une culture spécifique, par exemple « en-US » pour l’anglais (États-Unis). Toutefois, nous vous recommandons d’utiliser un nom de culture spécifique au lieu d’un nom de région à deux lettres, car un objet RegionInfo n’est pas complètement indépendant du langage. Plusieurs propriétés RegionInfo, notamment DisplayName, NativeName et CurrencyNativeName, dépendent des noms de culture.

L’exemple suivant explique la différence entre les valeurs de propriété RegionInfo de trois objets représentant la Belgique. Le premier est instancié à partir d’un nom de région (BE) uniquement, tandis que les deuxième et troisième sont instanciés à partir de noms de culture (fr-BE pour le français (Belgique) et nl-BE pour le néerlandais (Belgique), respectivement). L’exemple utilise la réflexion pour récupérer les valeurs de propriété de chaque objet 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

Dans des scénarios tels que les suivants, utilisez des noms de culture au lieu des noms de pays/régions lorsque vous instanciez un objet RegionInfo :

  • Lorsque le nom de la langue est de première principale. Par exemple, pour le nom de la culture es-US, vous voudrez probablement que votre application affiche « Estados Unidos » au lieu de « États-Unis ». L’utilisation du seul nom de pays/région (US) génère « États-Unis » indépendamment de la langue. Vous devez donc travailler avec le nom de la culture à la place.

  • Lorsque des différences de script doivent être prises en compte. Par exemple, le pays/la région AZ traite des cultures azerbaïdjanaises qui ont les noms az-Latn-AZ et az-Cyrl-AZ, et les scripts latins et cyrilliques peuvent être très différents pour ce pays/cette région.

  • Lorsque le maintien des détails est important. Les valeurs retournées par les membres RegionInfo peuvent différer selon que l’objet RegionInfo a été instancié en utilisant un nom de culture ou un nom de région. Par exemple, le tableau suivant répertorie les différences entre les valeurs de retour lorsqu’un objet RegionInfo est instancié en tirant parti de la région « US », de la culture « en-US » et de la culture « es-US ».

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