RegionInfo Constructors

Definition

Initializes a new instance of the RegionInfo class.

Overloads

RegionInfo(Int32)

Initializes a new instance of the RegionInfo class based on the country/region associated with the specified culture identifier.

RegionInfo(String)

Initializes a new instance of the RegionInfo class based on the country/region or specific culture, specified by name.

RegionInfo(Int32)

Source:
RegionInfo.cs
Source:
RegionInfo.cs
Source:
RegionInfo.cs

Initializes a new instance of the RegionInfo class based on the country/region associated with the specified culture identifier.

C#
public RegionInfo(int culture);

Parameters

culture
Int32

A culture identifier.

Exceptions

culture specifies either an invariant, custom, or neutral culture.

-or-

.NET 6+ only: Globalization-invariant mode is enabled in the environment.

Examples

The following code example compares two instances of RegionInfo that were created differently.

C#
using System;
using System.Globalization;

public class SamplesRegionInfo  {

   public static void Main()  {

      // Creates a RegionInfo using the ISO 3166 two-letter code.
      RegionInfo myRI1 = new RegionInfo( "US" );

      // Creates a RegionInfo using a CultureInfo.LCID.
      RegionInfo myRI2 = new RegionInfo( new CultureInfo("en-US",false).LCID );

      // Compares the two instances.
      if ( myRI1.Equals( myRI2 ) )
         Console.WriteLine( "The two RegionInfo instances are equal." );
      else
         Console.WriteLine( "The two RegionInfo instances are NOT equal." );
   }
}

/*
This code produces the following output.

The two RegionInfo instances are equal.

*/

Remarks

RegionInfo(String) is the recommended constructor for instantiating a RegionInfo object. Unlike the RegionInfo(Int32) constructor that requires a numeric culture identifier as a parameter, its parameter is a more readable culture name or country code.

The culture identifier is mapped to the corresponding National Language Support (NLS) locale identifier. For more information, see Windows LCID reference.

The value of the Name property of the new RegionInfo object instantiated by calling this constructor is the ISO 3166 2-letter code for the country/region, not the combined language and country/region code. For example, if a RegionInfo object is instantiated with the culture identifier 0x0409 for the English (United States) culture, the value of the Name property is "US". In contrast, if a RegionInfo object is instantiated with the combined language and country/region code en-US for the English (United States) culture, the value of the Name property is "en-US" in .NET Framework and just "US" in .NET Core and .NET 5+.

See also

Applies to

.NET 9 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

RegionInfo(String)

Source:
RegionInfo.cs
Source:
RegionInfo.cs
Source:
RegionInfo.cs

Initializes a new instance of the RegionInfo class based on the country/region or specific culture, specified by name.

C#
public RegionInfo(string name);

Parameters

name
String

A string that contains a two-letter code defined in ISO 3166 for country/region.

-or-

A string that contains the culture name for a specific culture, custom culture, or Windows-only culture. If the culture name is not in RFC 4646 format, your application should specify the entire culture name instead of just the country/region.

Exceptions

name is null.

name is not a valid country/region name or specific culture name.

-or-

.NET 6+ only: Globalization-invariant mode is enabled in the environment.

Examples

The following code example compares two instances of RegionInfo that were created differently.

C#
using System;
using System.Globalization;

public class SamplesRegionInfo  {

   public static void Main()  {

      // Creates a RegionInfo using the ISO 3166 two-letter code.
      RegionInfo myRI1 = new RegionInfo( "US" );

      // Creates a RegionInfo using a CultureInfo.LCID.
      RegionInfo myRI2 = new RegionInfo( new CultureInfo("en-US",false).LCID );

      // Compares the two instances.
      if ( myRI1.Equals( myRI2 ) )
         Console.WriteLine( "The two RegionInfo instances are equal." );
      else
         Console.WriteLine( "The two RegionInfo instances are NOT equal." );
   }
}

/*
This code produces the following output.

The two RegionInfo instances are equal.

*/

The following code example creates instances of RegionInfo using culture names.

C#
using System;
using System.Globalization;

public class SamplesRegionInfo  {

   public static void Main()  {

      // Creates an array containing culture names.
      String[] myCultures = new String[]  { "", "ar", "ar-DZ", "en", "en-US" };

      // Creates a RegionInfo for each of the culture names.
      //    Note that "ar" is the culture name for the neutral culture "Arabic",
      //    but it is also the region name for the country/region "Argentina";
      //    therefore, it does not fail as expected.
      Console.WriteLine("Without checks...");
      foreach (String culture in myCultures)  {
         try  {
            RegionInfo myRI = new RegionInfo( culture );
         }
         catch ( ArgumentException e )  {
            Console.WriteLine( e.ToString() );
         }
      }

      Console.WriteLine();

      Console.WriteLine( "Checking the culture names first..." );
      foreach (String culture in myCultures)  {
         if ( culture == "" )  {
            Console.WriteLine("The culture is the invariant culture.");
         }
         else  {
            CultureInfo myCI = new CultureInfo( culture, false );
            if ( myCI.IsNeutralCulture )
                {
                    Console.WriteLine( "The culture {0} is a neutral culture.", culture );
                }
                else   {
               Console.WriteLine( "The culture {0} is a specific culture.", culture );
               try  {
                  RegionInfo myRI = new RegionInfo( culture );
               }
               catch ( ArgumentException e )  {
                  Console.WriteLine( e.ToString() );
               }
            }
         }
      }
   }
}

/*
This code produces the following output.

Without checks...
System.ArgumentException: Region name '' is not supported.
Parameter name: name
   at System.Globalization.RegionInfo..ctor(String name)
   at SamplesRegionInfo.Main()
System.ArgumentException: Region name 'en' is not supported.
Parameter name: name
   at System.Globalization.CultureTableRecord..ctor(String regionName, Boolean useUserOverride)
   at System.Globalization.RegionInfo..ctor(String name)
   at SamplesRegionInfo.Main()

Checking the culture names first...
The culture is the invariant culture.
The culture ar is a neutral culture.
The culture ar-DZ is a specific culture.
The culture en is a neutral culture.
The culture en-US is a specific culture.

*/

Remarks

The name parameter is either one of the codes defined for country/region, or a specific, custom, or Windows-only culture name. Case is not significant. However, the Name, TwoLetterISORegionName, and ThreeLetterISORegionName properties return the specified code or culture name in uppercase.

The predefined RegionInfo names are listed in ISO 3166: Country codes.

You should provide the name of a specific culture rather than just a country/region name in the name parameter. For example, en-US for English (United States) or es-US for Spanish (United States) is preferable to US because properties such as NativeName and CurrencyNativeName reflect a specific language. az-Latn-AZ or az-Cyrl-AZ is preferable to AZ because properties such as NativeName, CurrencyNativeName, and CurrencySymbol reflect a specific script. The predefined culture names are listed at Windows LCID reference.

This constructor throws an ArgumentException if name is a neutral culture (such as en for English).

Notes to Callers

This constructor accepts only specific cultures or country/region codes. However, some neutral culture names are the same as country/region codes. In this case, name is interpreted as a country/region code rather than a neutral culture name, and this constructor does not throw an ArgumentException.

Applies to

.NET 9 and other versions
Product Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0