SByte.Parse Method (String, IFormatProvider)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.


Converts the string representation of a number in a specified culture-specific format to its 8-bit signed integer equivalent.

This API is not CLS-compliant.

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

public static sbyte Parse(
	string s,
	IFormatProvider provider


Type: System.String

A string that represents a number to convert. The string is interpreted using the NumberStyles.Integer style.

Type: System.IFormatProvider

An object that supplies culture-specific formatting information about s. If provider is null, the thread current culture is used.

Return Value

Type: System.SByte

An 8-bit signed integer that is equivalent to the number specified in s.

Exception Condition

s is null.


s is not in the correct format.


s represents a number less than MinValue or greater than MaxValue.

The s parameter contains a number of the form:


Elements in square brackets ([ and ]) are optional. The following table describes each element.




Optional white space.


An optional sign.


A sequence of digits ranging from 0 to 9.

The s parameter is interpreted using the Integer style. In addition to the byte value's decimal digits, only leading and trailing spaces with a leading sign are allowed. To explicitly define the style elements with the culture-specific formatting information that can be present in s, use the Parse(String, NumberStyles, IFormatProvider) method.

The provider parameter is an IFormatProvider implementation whose GetFormat method returns a NumberFormatInfo object that provides culture-specific information about the format of s. There are three ways to use the provider parameter to supply custom formatting information to the parse operation:

  • You can pass the actual NumberFormatInfo object that provides formatting information. (Its implementation of GetFormat simply returns itself.)

  • You can pass a CultureInfo object that specifies the culture whose formatting is to be used. Its NumberFormat property provides formatting information.

  • You can pass a custom IFormatProvider implementation. Its GetFormat method must instantiate and return the NumberFormatInfo object that provides formatting information.

If provider is null, the NumberFormatInfo object for the current culture is used.

The following example defines a custom NumberFormatInfo object that defines the tilde (~) as the negative sign. It then parses a number of numeric strings using this custom NumberFormatInfo object as well as a CultureInfo object that represents the invariant culture.

using System;
using System.Globalization;

public class Example
   public static void Main()
      NumberFormatInfo nf = new NumberFormatInfo();
      nf.NegativeSign = "~"; 

      string[] values = { "-103", "+12", "~16", "  1", "~255" };
      IFormatProvider[] providers = { nf, CultureInfo.InvariantCulture };

      foreach (IFormatProvider provider in providers)
         Console.WriteLine("Conversions using {0}:", ((object) provider).GetType().Name);
         foreach (string value in values)
            try {
               Console.WriteLine("   Converted '{0}' to {1}.", 
                                 value, SByte.Parse(value, provider));
            catch (FormatException) {
               Console.WriteLine("   Unable to parse '{0}'.", value);   
            catch (OverflowException) {
               Console.WriteLine("   '{0}' is out of range of the SByte type.", value);         
// The example displays the following output:
//       Conversions using NumberFormatInfo:
//          Unable to parse '-103'.
//          Converted '+12' to 12.
//          Converted '~16' to -16.
//          Converted '  1' to 1.
//          '~255' is out of range of the SByte type.
//       Conversions using CultureInfo:
//          Converted '-103' to -103.
//          Converted '+12' to 12.
//          Unable to parse '~16'.
//          Converted '  1' to 1.
//          Unable to parse '~255'.

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top