Udostępnij za pośrednictwem


Klasa RegionInfo

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

CultureInfo W przeciwieństwie do klasy RegionInfo klasa nie reprezentuje preferencji użytkownika i nie zależy od języka ani kultury użytkownika.

Nazwy skojarzone z obiektem RegionInfo

Nazwa RegionInfo obiektu jest jednym z dwuliterowych kodów zdefiniowanych w standardzie ISO 3166 dla kraju/regionu. Wielkość liter nie jest znacząca. Właściwości Name, TwoLetterISORegionNamei ThreeLetterISORegionName zwracają odpowiednie kody w wielkiej literze. Aby uzyskać bieżącą listę RegionInfo nazw, zobacz ISO 3166: Kody kraju.

Tworzenie wystąpienia obiektu RegionInfo

Aby utworzyć RegionInfo wystąpienie obiektu, należy przekazać RegionInfo(String) konstruktorowi dwuliterową nazwę regionu, taką jak "US" dla Stany Zjednoczone lub nazwę określonej kultury, taką jak "en-US" dla języka angielskiego (Stany Zjednoczone). Zalecamy jednak użycie określonej nazwy kultury zamiast dwuliterowej nazwy regionu, ponieważ RegionInfo obiekt nie jest całkowicie niezależny od języka. Kilka RegionInfo właściwości, w tym DisplayName, NativeNamei CurrencyNativeName, zależy od nazw kultur.

Poniższy przykład ilustruje różnicę w RegionInfo wartościach właściwości dla trzech obiektów reprezentujących Belgię. Pierwszy jest tworzone tylko z nazwy regionu (BE), podczas gdy drugie i trzecie są tworzone z nazw kultury (fr-BE odpowiednio dla Francuskich (Belgii) i nl-BE Holenderskich (Belgia). W przykładzie użyto odbicia w celu pobrania wartości właściwości każdego RegionInfo obiektu.

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

W scenariuszach, takich jak poniżej, użyj nazw kultur zamiast nazw krajów/regionów podczas tworzenia wystąpienia RegionInfo obiektu:

  • Gdy nazwa języka ma podstawowe znaczenie. Na przykład dla es-US nazwy kultury prawdopodobnie chcesz, aby aplikacja wyświetlała tekst "Estados Unidos" zamiast "Stany Zjednoczone". Użycie samej nazwy kraju/regionu (US) daje wartość "Stany Zjednoczone" niezależnie od języka, dlatego należy zamiast tego pracować z nazwą kultury.

  • Gdy należy rozważyć różnice skryptów. Na przykład kraj/region AZ zajmuje się kulturami Azerbejdżanu, które mają nazwy az-Latn-AZ i az-Cyrl-AZ, a skrypty łacińskie i cyrylica mogą być bardzo różne dla tego kraju/regionu.

  • Gdy konserwacja szczegółów jest ważna. Wartości zwracane przez RegionInfo elementy członkowskie mogą się różnić w zależności od tego, czy RegionInfo obiekt został utworzone przy użyciu nazwy kultury, czy nazwy regionu. Na przykład w poniższej tabeli wymieniono różnice w zwracanych wartościach, gdy RegionInfo wystąpi obiekt przy użyciu regionu "USA", kultury "en-US" i kultury "es-US".

    Element członkowski "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