This documentation is archived and is not being maintained.

Convert.ToInt32 Method (String, IFormatProvider)

Updated: May 2009

Converts the specified string representation of a number to an equivalent 32-bit signed integer, using the specified culture-specific formatting information.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public static int ToInt32(
	string value,
	IFormatProvider provider
)

Parameters

value
Type: System.String

A string that contains the number to convert.

provider
Type: System.IFormatProvider

An object that supplies culture-specific formatting information.

Return Value

Type: System.Int32
A 32-bit signed integer that is equivalent to the number in value, or 0 (zero) if value is null.

ExceptionCondition
FormatException

value does not consist of an optional sign followed by a sequence of digits (0 through 9).

OverflowException

value represents a number that is less than Int32.MinValue or greater than Int32.MaxValue.

The return value is the result of invoking the Int32.Parse method on value.

provider is an IFormatProvider instance that obtains a NumberFormatInfo object. The NumberFormatInfo object provides culture-specific information about the format of value. If provider is null, the NumberFormatInfo for the current culture is used.

If you prefer not to handle an exception if the conversion fails, you can call the Int32.TryParse method instead. It returns a Boolean value that indicates whether the conversion succeeded or failed.

The following example defines a custom NumberFormatInfo object that recognizes the string "pos" as the positive sign and the string "neg" as the negative sign. It then attempts to convert each element of a numeric string array to an integer using both this provider and the NumberFormatInfo provider for the invariant culture.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      // Create a custom NumberFormatInfo object and set its two properties 
      // used by default in parsing numeric strings.
      NumberFormatInfo customProvider = new NumberFormatInfo();
      customProvider.NegativeSign = "neg ";
      customProvider.PositiveSign = "pos ";

      // Add custom and invariant provider to an array of providers.
      NumberFormatInfo[] providers = { customProvider, NumberFormatInfo.InvariantInfo };

      // Define an array of strings to convert.
      string[] numericStrings = { "123456789", "+123456789", "pos 123456789",
                                  "-123456789", "neg 123456789", "123456789.",
                                  "123,456,789", "(123456789)", "2147483648",
                                  "-2147483649" }; 

      // Use each provider to parse all the numeric strings. 
      for (int ctr = 0; ctr <= 1; ctr++)
      {
         IFormatProvider provider = providers[ctr];
         Console.WriteLine(ctr == 0 ? "Custom Provider:" : "Invariant Provider:");
         foreach (string numericString in numericStrings)
         {
            Console.Write("{0,15}  --> ", numericString);
            try {
               Console.WriteLine("{0,20}", Convert.ToInt32(numericString, provider));
            }
            catch (FormatException) {
               Console.WriteLine("{0,20}", "FormatException");
            }    
            catch (OverflowException) {
               Console.WriteLine("{0,20}", "OverflowException");                 
            }
         }
         Console.WriteLine();
      }                  
   }
}
// The example displays the following output: 
//       Custom Provider: 
//             123456789  -->            123456789 
//            +123456789  -->      FormatException 
//         pos 123456789  -->            123456789 
//            -123456789  -->      FormatException 
//         neg 123456789  -->           -123456789 
//            123456789.  -->      FormatException 
//           123,456,789  -->      FormatException 
//           (123456789)  -->      FormatException 
//            2147483648  -->    OverflowException 
//           -2147483649  -->      FormatException 
//        
//       Invariant Provider: 
//             123456789  -->            123456789 
//            +123456789  -->            123456789 
//         pos 123456789  -->      FormatException 
//            -123456789  -->           -123456789 
//         neg 123456789  -->      FormatException 
//            123456789.  -->      FormatException 
//           123,456,789  -->      FormatException 
//           (123456789)  -->      FormatException 
//            2147483648  -->    OverflowException 
//           -2147483649  -->    OverflowException

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0

Date

History

Reason

May 2009

Expanded the Remarks section.

Customer feedback.

Show: