Partager via


Convert.ToInt16 Method (String)

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Converts the specified String representation of a number to an equivalent 16-bit signed integer.

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

Syntax

'Declaration
Public Shared Function ToInt16 ( _
    value As String _
) As Short
public static short ToInt16(
    string value
)

Parameters

Return Value

Type: System.Int16
A 16-bit signed integer equivalent to the value of value.
-or-
Zero if value is nulla null reference (Nothing in Visual Basic).

Exceptions

Exception Condition
FormatException

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

OverflowException

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

Remarks

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

Examples

The following code example converts String representations of 16-bit integers with the ToInt16 method, using default formatting.

' Example of the Convert.ToInt16( String ) and 
' Convert.ToInt16( String, IFormatProvider ) methods.
Imports System.Globalization

Module Example

   Dim format As String = "{0,-20}{1,-20}{2}"

   ' Get the exception type name; remove the namespace prefix.
   Function GetExceptionType(ByVal ex As Exception) As String

      Dim exceptionType As String = ex.GetType().ToString()
      Return exceptionType.Substring( _
          exceptionType.LastIndexOf("."c) + 1)
   End Function

   Sub ConvertToInt16(ByVal outputBlock As System.Windows.Controls.TextBlock, ByVal numericStr As String, _
       ByVal provider As IFormatProvider)

      Dim defaultValue As Object
      Dim providerValue As Object

      ' Convert numericStr to Int16 without a format provider.
      Try
         defaultValue = Convert.ToInt16(numericStr)
      Catch ex As Exception
         defaultValue = GetExceptionType(ex)
      End Try

      ' Convert numericStr to Int16 with a format provider.
      Try
         providerValue = Convert.ToInt16(numericStr, provider)
      Catch ex As Exception
         providerValue = GetExceptionType(ex)
      End Try

      outputBlock.Text &= String.Format(format, numericStr, _
          defaultValue, providerValue) & vbCrLf
   End Sub

   Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

      ' Create a NumberFormatInfo object and set several of its
      ' properties that apply to numbers.
      Dim provider As NumberFormatInfo = New NumberFormatInfo()

      ' These properties affect the conversion.
      provider.NegativeSign = "neg "
      provider.PositiveSign = "pos "

      ' These properties do not affect the conversion.
      ' The input string cannot have decimal and group separators.
      provider.NumberDecimalSeparator = "."
      provider.NumberGroupSeparator = ","
      provider.NumberGroupSizes = New Integer() {3}
      provider.NumberNegativePattern = 0

      outputBlock.Text &= String.Format("This example of" & vbCrLf & _
          "  Convert.ToInt16( String ) and " & vbCrLf & _
          "  Convert.ToInt16( String, IFormatProvider ) " & _
          vbCrLf & "generates the following output. It " & _
          "converts several strings to " & vbCrLf & "Short " & _
          "values, using default formatting " & _
          "or a NumberFormatInfo object." & vbCrLf) & vbCrLf
      outputBlock.Text &= String.Format(format, "String to convert", _
          "Default/exception", "Provider/exception") & vbCrLf
      outputBlock.Text &= String.Format(format, "-----------------", _
          "-----------------", "------------------") & vbCrLf

      ' Convert strings, with and without an IFormatProvider.
      ConvertToInt16(outputBlock, "12345", provider)
      ConvertToInt16(outputBlock, "+12345", provider)
      ConvertToInt16(outputBlock, "pos 12345", provider)
      ConvertToInt16(outputBlock, "-12345", provider)
      ConvertToInt16(outputBlock, "neg 12345", provider)
      ConvertToInt16(outputBlock, "12345.", provider)
      ConvertToInt16(outputBlock, "12,345", provider)
      ConvertToInt16(outputBlock, "(12345)", provider)
      ConvertToInt16(outputBlock, "32768", provider)
      ConvertToInt16(outputBlock, "-32769", provider)
   End Sub
End Module

' This example of
'   Convert.ToInt16( String ) and
'   Convert.ToInt16( String, IFormatProvider )
' generates the following output. It converts several strings to
' Short values, using default formatting or a NumberFormatInfo object.
' 
' String to convert   Default/exception   Provider/exception
' -----------------   -----------------   ------------------
' 12345               12345               12345
' +12345              12345               FormatException
' pos 12345           FormatException     12345
' -12345              -12345              FormatException
' neg 12345           FormatException     -12345
' 12345.              FormatException     FormatException
' 12,345              FormatException     FormatException
' (12345)             FormatException     FormatException
' 32768               OverflowException   OverflowException
' -32769              OverflowException   FormatException
// Example of the Convert.ToInt16( string ) and 
// Convert.ToInt16( string, IFormatProvider ) methods.
using System;
using System.Globalization;

class Example
{
   static string format = "{0,-20}{1,-20}{2}";

   // Get the exception type name; remove the namespace prefix.
   static string GetExceptionType(Exception ex)
   {
      string exceptionType = ex.GetType().ToString();
      return exceptionType.Substring(
          exceptionType.LastIndexOf('.') + 1);
   }

   static void ConvertToInt16(System.Windows.Controls.TextBlock outputBlock, string numericStr,
       IFormatProvider provider)
   {
      object defaultValue;
      object providerValue;

      // Convert numericStr to Int16 without a format provider.
      try
      {
         defaultValue = Convert.ToInt16(numericStr);
      }
      catch (Exception ex)
      {
         defaultValue = GetExceptionType(ex);
      }

      // Convert numericStr to Int16 with a format provider.
      try
      {
         providerValue = Convert.ToInt16(numericStr, provider);
      }
      catch (Exception ex)
      {
         providerValue = GetExceptionType(ex);
      }

      outputBlock.Text += String.Format(format, numericStr,
          defaultValue, providerValue) + "\n";
   }

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Create a NumberFormatInfo object and set several of its
      // properties that apply to numbers.
      NumberFormatInfo provider = new NumberFormatInfo();

      // These properties affect the conversion.
      provider.NegativeSign = "neg ";
      provider.PositiveSign = "pos ";

      // These properties do not affect the conversion.
      // The input string cannot have decimal and group separators.
      provider.NumberDecimalSeparator = ".";
      provider.NumberGroupSeparator = ",";
      provider.NumberGroupSizes = new int[] { 3 };
      provider.NumberNegativePattern = 0;

      outputBlock.Text += String.Format("This example of\n" +
          "  Convert.ToInt16( string ) and \n" +
          "  Convert.ToInt16( string, IFormatProvider ) " +
          "\ngenerates the following output. It converts " +
          "several strings to \nshort values, using " +
          "default formatting or a NumberFormatInfo object.\n") + "\n";
      outputBlock.Text += String.Format(format, "String to convert",
          "Default/exception", "Provider/exception") + "\n";
      outputBlock.Text += String.Format(format, "-----------------",
          "-----------------", "------------------") + "\n";

      // Convert strings, with and without an IFormatProvider.
      ConvertToInt16(outputBlock, "12345", provider);
      ConvertToInt16(outputBlock, "+12345", provider);
      ConvertToInt16(outputBlock, "pos 12345", provider);
      ConvertToInt16(outputBlock, "-12345", provider);
      ConvertToInt16(outputBlock, "neg 12345", provider);
      ConvertToInt16(outputBlock, "12345.", provider);
      ConvertToInt16(outputBlock, "12,345", provider);
      ConvertToInt16(outputBlock, "(12345)", provider);
      ConvertToInt16(outputBlock, "32768", provider);
      ConvertToInt16(outputBlock, "-32769", provider);
   }
}

/*
This example of
  Convert.ToInt16( string ) and
  Convert.ToInt16( string, IFormatProvider )
generates the following output. It converts several strings to
short values, using default formatting or a NumberFormatInfo object.

String to convert   Default/exception   Provider/exception
-----------------   -----------------   ------------------
12345               12345               12345
+12345              12345               FormatException
pos 12345           FormatException     12345
-12345              -12345              FormatException
neg 12345           FormatException     -12345
12345.              FormatException     FormatException
12,345              FormatException     FormatException
(12345)             FormatException     FormatException
32768               OverflowException   OverflowException
-32769              OverflowException   FormatException
*/

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.