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ą nazwyaz-Latn-AZ
iaz-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