Convert.ToSByte Método

Definição

Converte um valor especificado em um inteiro com sinal de 8 bits.Converts a specified value to an 8-bit signed integer.

Sobrecargas

ToSByte(UInt32)

Converte o valor do inteiro sem sinal de 32 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 32-bit unsigned integer to an equivalent 8-bit signed integer.

ToSByte(String)

Converte a representação de cadeia de caracteres especificada de um número em um inteiro com sinal de 8 bits equivalente.Converts the specified string representation of a number to an equivalent 8-bit signed integer.

ToSByte(UInt64)

Converte o valor do inteiro sem sinal de 64 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 64-bit unsigned integer to an equivalent 8-bit signed integer.

ToSByte(UInt16)

Converte o valor do inteiro sem sinal de 16 bits especificado no inteiro com sinal de 8 bits equivalente.Converts the value of the specified 16-bit unsigned integer to the equivalent 8-bit signed integer.

ToSByte(String, IFormatProvider)

Converte a representação de cadeia de caracteres especificada de um número em um inteiro com sinal de 8 bits equivalente, usando as informações de formatação específicas à cultura especificadas.Converts the specified string representation of a number to an equivalent 8-bit signed integer, using the specified culture-specific formatting information.

ToSByte(String, Int32)

Converte a representação de cadeia de caracteres de um número em uma base especificada para um inteiro com sinal de 8 bits equivalente.Converts the string representation of a number in a specified base to an equivalent 8-bit signed integer.

ToSByte(Single)

Converte o valor do número de ponto flutuante de precisão simples especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified single-precision floating-point number to an equivalent 8-bit signed integer.

ToSByte(Object, IFormatProvider)

Converte o valor do objeto especificado em um inteiro com sinal de 8 bits, usando as informações de formatação específicas à cultura especificadas.Converts the value of the specified object to an 8-bit signed integer, using the specified culture-specific formatting information.

ToSByte(SByte)

Retorna o inteiro com sinal de 8 bits especificado; nenhuma conversão real é executada.Returns the specified 8-bit signed integer; no actual conversion is performed.

ToSByte(Int32)

Converte o valor do inteiro com sinal de 32 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 32-bit signed integer to an equivalent 8-bit signed integer.

ToSByte(Int64)

Converte o valor do inteiro com sinal de 64 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 64-bit signed integer to an equivalent 8-bit signed integer.

ToSByte(Object)

Converte o valor do objeto especificado em um inteiro com sinal de 8 bits.Converts the value of the specified object to an 8-bit signed integer.

ToSByte(Byte)

Converte o valor do inteiro sem sinal de 8 bits especificado no inteiro com sinal de 8 bits equivalente.Converts the value of the specified 8-bit unsigned integer to the equivalent 8-bit signed integer.

ToSByte(Char)

Converte o valor do caractere Unicode especificado no inteiro com sinal de 8 bits equivalente.Converts the value of the specified Unicode character to the equivalent 8-bit signed integer.

ToSByte(DateTime)

A chamada desse método sempre lança InvalidCastException.Calling this method always throws InvalidCastException.

ToSByte(Boolean)

Converte o valor booliano especificado para o inteiro com sinal de 8 bits equivalente.Converts the specified Boolean value to the equivalent 8-bit signed integer.

ToSByte(Double)

Converte o valor do número de ponto flutuante de precisão dupla especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified double-precision floating-point number to an equivalent 8-bit signed integer.

ToSByte(Int16)

Converte o valor do inteiro com sinal de 16 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 16-bit signed integer to the equivalent 8-bit signed integer.

ToSByte(Decimal)

Converte o valor do número decimal especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified decimal number to an equivalent 8-bit signed integer.

ToSByte(UInt32)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do inteiro sem sinal de 32 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 32-bit unsigned integer to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(System::UInt32 value);
public static sbyte ToSByte (uint value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (uint value);
static member ToSByte : uint32 -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : uint32 -> sbyte
Public Shared Function ToSByte (value As UInteger) As SByte

Parâmetros

value
UInt32

O inteiro sem sinal de 32 bits a ser convertido.The 32-bit unsigned integer to convert.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é maior que MaxValue ou menor que MinValue.value is greater than MaxValue or less than MinValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de inteiros em um byte assinado.The following example attempts to convert each element in an integer array to a signed byte.

uint[] numbers = { UInt32.MinValue, 121, 340, UInt32.MaxValue };
sbyte result;

foreach (uint number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    Converted the UInt32 value 0 to the SByte value 0.
//    Converted the UInt32 value 121 to the SByte value 121.
//    The UInt32 value 340 is outside the range of the SByte type.
//    The UInt32 value 4294967295 is outside the range of the SByte type.
Dim numbers() As UInteger = { UInt32.MinValue, 121, 340, UInt32.MaxValue }
Dim result As SByte
For Each number As UInteger In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next
' The example displays the following output:
'    Converted the UInt32 value 0 to the SByte value 0.
'    Converted the UInt32 value 121 to the SByte value 121.
'    The UInt32 value 340 is outside the range of the SByte type.
'    The UInt32 value 4294967295 is outside the range of the SByte type.

Aplica-se a

ToSByte(String)

Importante

Esta API não está em conformidade com CLS.

Converte a representação de cadeia de caracteres especificada de um número em um inteiro com sinal de 8 bits equivalente.Converts the specified string representation of a number to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(System::String ^ value);
public static sbyte ToSByte (string value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (string value);
static member ToSByte : string -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : string -> sbyte
Public Shared Function ToSByte (value As String) As SByte

Parâmetros

value
String

Uma cadeia de caracteres que contém o número a ser convertido.A string that contains the number to convert.

Retornos

SByte

Um inteiro com sinal de 8 bits equivalente ao número em value ou 0 (zero), se o valor for null.An 8-bit signed integer that is equivalent to the number in value, or 0 (zero) if value is null.

Atributos

Exceções

value não consiste em um sinal opcional seguido de uma sequência de dígitos (de 0 a 9).value does not consist of an optional sign followed by a sequence of digits (0 through 9).

value representa um número que é menor que MinValue ou maior que MaxValue.value represents a number that is less than MinValue or greater than MaxValue.

Exemplos

O exemplo a seguir converte representações de cadeia de caracteres de SByte valores com o ToSByte método, usando a formatação padrão.The following example converts string representations of SByte values with the ToSByte method, using default formatting.

// Example of the Convert::ToSByte( String* ) and 
// Convert::ToSByte( String*, IFormatProvider* ) methods.
using namespace System;
using namespace System::Globalization;
const __wchar_t * protoFmt = L"{0,-20}{1,-20}{2}";

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

void ConvertToSByte( String^ numericStr, IFormatProvider^ provider )
{
   Object^ defaultValue;
   Object^ providerValue;
   
   // Convert numericStr to SByte without a format provider.
   try
   {
      defaultValue = Convert::ToSByte( numericStr );
   }
   catch ( Exception^ ex ) 
   {
      defaultValue = GetExceptionType( ex );
   }

   
   // Convert numericStr to SByte with a format provider.
   try
   {
      providerValue = Convert::ToSByte( numericStr, provider );
   }
   catch ( Exception^ ex ) 
   {
      providerValue = GetExceptionType( ex );
   }

   Console::WriteLine( gcnew String( protoFmt ), numericStr, defaultValue, providerValue );
}

int main()
{
   
   // Create a NumberFormatInfo object and set several of its
   // properties that apply to numbers.
   NumberFormatInfo^ provider = gcnew 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->NumberNegativePattern = 0;
   Console::WriteLine( "This example of\n"
   "  Convert::ToSByte( String* ) and \n"
   "  Convert::ToSByte( String*, IFormatProvider* ) "
   "\ngenerates the following output. It converts "
   "several strings to \nSByte values, using "
   "default formatting or a NumberFormatInfo object.\n" );
   Console::WriteLine( gcnew String( protoFmt ), "String to convert", "Default/exception", "Provider/exception" );
   Console::WriteLine( gcnew String( protoFmt ), "-----------------", "-----------------", "------------------" );
   
   // Convert strings, with and without an IFormatProvider.
   ConvertToSByte( "123", provider );
   ConvertToSByte( "+123", provider );
   ConvertToSByte( "pos 123", provider );
   ConvertToSByte( "-123", provider );
   ConvertToSByte( "neg 123", provider );
   ConvertToSByte( "123.", provider );
   ConvertToSByte( "(123)", provider );
   ConvertToSByte( "128", provider );
   ConvertToSByte( "-129", provider );
}

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

String to convert   Default/exception   Provider/exception
-----------------   -----------------   ------------------
123                 123                 123
+123                123                 FormatException
pos 123             FormatException     123
-123                -123                FormatException
neg 123             FormatException     -123
123.                FormatException     FormatException
(123)               FormatException     FormatException
128                 OverflowException   OverflowException
-129                OverflowException   FormatException
*/
// Example of the Convert.ToSByte( string ) and
// Convert.ToSByte( string, IFormatProvider ) methods.
using System;
using System.Globalization;

class ToSByteProviderDemo
{
    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 ConvertToSByte( string numericStr,
        IFormatProvider provider )
    {
        object defaultValue;
        object providerValue;

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

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

        Console.WriteLine( format, numericStr,
            defaultValue, providerValue );
    }

    public static void Main( )
    {
        // 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.NumberNegativePattern = 0;

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

        // Convert strings, with and without an IFormatProvider.
        ConvertToSByte( "123", provider );
        ConvertToSByte( "+123", provider );
        ConvertToSByte( "pos 123", provider );
        ConvertToSByte( "-123", provider );
        ConvertToSByte( "neg 123", provider );
        ConvertToSByte( "123.", provider );
        ConvertToSByte( "(123)", provider );
        ConvertToSByte( "128", provider );
        ConvertToSByte( "-129", provider );
    }
}

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

String to convert   Default/exception   Provider/exception
-----------------   -----------------   ------------------
123                 123                 123
+123                123                 FormatException
pos 123             FormatException     123
-123                -123                FormatException
neg 123             FormatException     -123
123.                FormatException     FormatException
(123)               FormatException     FormatException
128                 OverflowException   OverflowException
-129                OverflowException   FormatException
*/
' Example of the Convert.ToSByte( String ) and 
' Convert.ToSByte( String, IFormatProvider ) methods.
Imports System.Globalization

Module ToSByteProviderDemo

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

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

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

    Sub ConvertToSByte( numericStr As String, _
        provider As IFormatProvider )

        Dim defaultValue    As Object
        Dim providerValue   As Object

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

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

        Console.WriteLine( format, numericStr, _
            defaultValue, providerValue )
    End Sub

    Sub Main( )

        ' 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.NumberNegativePattern = 0

        Console.WriteLine( "This example of" & vbCrLf & _
            "  Convert.ToSByte( String ) and " & vbCrLf & _
            "  Convert.ToSByte( String, IFormatProvider ) " & _
            vbCrLf & "generates the following output. It " & _
            "converts several strings to " & vbCrLf & "SByte " & _
            "values, using default formatting " & _
            "or a NumberFormatInfo object." & vbCrLf )
        Console.WriteLine( format, "String to convert", _
            "Default/exception", "Provider/exception" )
        Console.WriteLine( format, "-----------------", _
            "-----------------", "------------------" )

        ' Convert strings, with and without an IFormatProvider.
        ConvertToSByte( "123", provider )
        ConvertToSByte( "+123", provider )
        ConvertToSByte( "pos 123", provider )
        ConvertToSByte( "-123", provider )
        ConvertToSByte( "neg 123", provider )
        ConvertToSByte( "123.", provider )
        ConvertToSByte( "(123)", provider )
        ConvertToSByte( "128", provider )
        ConvertToSByte( "-129", provider )
    End Sub 
End Module 

' This example of
'   Convert.ToSByte( String ) and
'   Convert.ToSByte( String, IFormatProvider )
' generates the following output. It converts several strings to
' SByte values, using default formatting or a NumberFormatInfo object.
' 
' String to convert   Default/exception   Provider/exception
' -----------------   -----------------   ------------------
' 123                 123                 123
' +123                123                 FormatException
' pos 123             FormatException     123
' -123                -123                FormatException
' neg 123             FormatException     -123
' 123.                FormatException     FormatException
' (123)               FormatException     FormatException
' 128                 OverflowException   OverflowException
' -129                OverflowException   FormatException

Comentários

O uso do ToSByte(String) método é equivalente ao passar value para o SByte.Parse(String) método.Using the ToSByte(String) method is equivalent to passing value to the SByte.Parse(String) method. value é interpretado usando as convenções de formatação da cultura de thread atual.value is interpreted by using the formatting conventions of the current thread culture.

Se você preferir não tratar uma exceção se a conversão falhar, você poderá chamar o SByte.TryParse método em vez disso.If you prefer not to handle an exception if the conversion fails, you can call the SByte.TryParse method instead. Ele retorna um valor Boolean que indica se a conversão foi bem-sucedida ou falhou.It returns a Boolean value that indicates whether the conversion succeeded or failed.

Confira também

Aplica-se a

ToSByte(UInt64)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do inteiro sem sinal de 64 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 64-bit unsigned integer to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(System::UInt64 value);
public static sbyte ToSByte (ulong value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (ulong value);
static member ToSByte : uint64 -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : uint64 -> sbyte
Public Shared Function ToSByte (value As ULong) As SByte

Parâmetros

value
UInt64

O inteiro sem sinal de 64 bits a ser convertido.The 64-bit unsigned integer to convert.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é maior que MaxValue ou menor que MinValue.value is greater than MaxValue or less than MinValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de inteiros longos em um byte assinado.The following example attempts to convert each element in an array of long integers to a signed byte.

ulong[] numbers = { UInt64.MinValue, 121, 340, UInt64.MaxValue };
sbyte result;

foreach (ulong number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    Converted the UInt64 value 0 to the SByte value 0.
//    Converted the UInt64 value 121 to the SByte value 121.
//    The UInt64 value 340 is outside the range of the SByte type.
//    The UInt64 value 18446744073709551615 is outside the range of the SByte type.
Dim numbers() As ULong = { UInt64.MinValue, 121, 340, UInt64.MaxValue }
Dim result As SByte
For Each number As ULong In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next
' The example displays the following output:
'    Converted the UInt64 value 0 to the SByte value 0.
'    Converted the UInt64 value 121 to the SByte value 121.
'    The UInt64 value 340 is outside the range of the SByte type.
'    The UInt64 value 18446744073709551615 is outside the range of the SByte type.

Aplica-se a

ToSByte(UInt16)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do inteiro sem sinal de 16 bits especificado no inteiro com sinal de 8 bits equivalente.Converts the value of the specified 16-bit unsigned integer to the equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(System::UInt16 value);
public static sbyte ToSByte (ushort value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (ushort value);
static member ToSByte : uint16 -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : uint16 -> sbyte
Public Shared Function ToSByte (value As UShort) As SByte

Parâmetros

value
UInt16

O inteiro não assinado de 16 bits a ser convertido.The 16-bit unsigned integer to convert.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é maior que MaxValue.value is greater than MaxValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de inteiros de 16 bits não assinados em um byte assinado.The following example attempts to convert each element in an array of unsigned 16-bit integers to a signed byte.

ushort[] numbers = { UInt16.MinValue, 121, 340, UInt16.MaxValue };
sbyte result;

foreach (ushort number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    Converted the UInt16 value 0 to the SByte value 0.
//    Converted the UInt16 value 121 to the SByte value 121.
//    The UInt16 value 340 is outside the range of the SByte type.
//    The UInt16 value 65535 is outside the range of the SByte type.
Dim numbers() As UShort = { UInt16.MinValue, 121, 340, UInt16.MaxValue }
Dim result As SByte
For Each number As UShort In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next
' The example displays the following output:
'    Converted the UInt16 value 0 to the SByte value 0.
'    Converted the UInt16 value 121 to the SByte value 121.
'    The UInt16 value 340 is outside the range of the SByte type.
'    The UInt16 value 65535 is outside the range of the SByte type.

Aplica-se a

ToSByte(String, IFormatProvider)

Importante

Esta API não está em conformidade com CLS.

Converte a representação de cadeia de caracteres especificada de um número em um inteiro com sinal de 8 bits equivalente, usando as informações de formatação específicas à cultura especificadas.Converts the specified string representation of a number to an equivalent 8-bit signed integer, using the specified culture-specific formatting information.

public:
 static System::SByte ToSByte(System::String ^ value, IFormatProvider ^ provider);
public static sbyte ToSByte (string value, IFormatProvider provider);
[System.CLSCompliant(false)]
public static sbyte ToSByte (string value, IFormatProvider? provider);
[System.CLSCompliant(false)]
public static sbyte ToSByte (string value, IFormatProvider provider);
static member ToSByte : string * IFormatProvider -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : string * IFormatProvider -> sbyte
Public Shared Function ToSByte (value As String, provider As IFormatProvider) As SByte

Parâmetros

value
String

Uma cadeia de caracteres que contém o número a ser convertido.A string that contains the number to convert.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura.An object that supplies culture-specific formatting information.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é null.value is null.

value não consiste em um sinal opcional seguido de uma sequência de dígitos (de 0 a 9).value does not consist of an optional sign followed by a sequence of digits (0 through 9).

value representa um número que é menor que MinValue ou maior que MaxValue.value represents a number that is less than MinValue or greater than MaxValue.

Exemplos

O exemplo a seguir converte representações de cadeia de caracteres de SByte valores com o ToSByte método, usando um IFormatProvider objeto.The following example converts string representations of SByte values with the ToSByte method, using an IFormatProvider object.

// Example of the Convert::ToSByte( String* ) and 
// Convert::ToSByte( String*, IFormatProvider* ) methods.
using namespace System;
using namespace System::Globalization;
const __wchar_t * protoFmt = L"{0,-20}{1,-20}{2}";

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

void ConvertToSByte( String^ numericStr, IFormatProvider^ provider )
{
   Object^ defaultValue;
   Object^ providerValue;
   
   // Convert numericStr to SByte without a format provider.
   try
   {
      defaultValue = Convert::ToSByte( numericStr );
   }
   catch ( Exception^ ex ) 
   {
      defaultValue = GetExceptionType( ex );
   }

   
   // Convert numericStr to SByte with a format provider.
   try
   {
      providerValue = Convert::ToSByte( numericStr, provider );
   }
   catch ( Exception^ ex ) 
   {
      providerValue = GetExceptionType( ex );
   }

   Console::WriteLine( gcnew String( protoFmt ), numericStr, defaultValue, providerValue );
}

int main()
{
   
   // Create a NumberFormatInfo object and set several of its
   // properties that apply to numbers.
   NumberFormatInfo^ provider = gcnew 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->NumberNegativePattern = 0;
   Console::WriteLine( "This example of\n"
   "  Convert::ToSByte( String* ) and \n"
   "  Convert::ToSByte( String*, IFormatProvider* ) "
   "\ngenerates the following output. It converts "
   "several strings to \nSByte values, using "
   "default formatting or a NumberFormatInfo object.\n" );
   Console::WriteLine( gcnew String( protoFmt ), "String to convert", "Default/exception", "Provider/exception" );
   Console::WriteLine( gcnew String( protoFmt ), "-----------------", "-----------------", "------------------" );
   
   // Convert strings, with and without an IFormatProvider.
   ConvertToSByte( "123", provider );
   ConvertToSByte( "+123", provider );
   ConvertToSByte( "pos 123", provider );
   ConvertToSByte( "-123", provider );
   ConvertToSByte( "neg 123", provider );
   ConvertToSByte( "123.", provider );
   ConvertToSByte( "(123)", provider );
   ConvertToSByte( "128", provider );
   ConvertToSByte( "-129", provider );
}

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

String to convert   Default/exception   Provider/exception
-----------------   -----------------   ------------------
123                 123                 123
+123                123                 FormatException
pos 123             FormatException     123
-123                -123                FormatException
neg 123             FormatException     -123
123.                FormatException     FormatException
(123)               FormatException     FormatException
128                 OverflowException   OverflowException
-129                OverflowException   FormatException
*/
// Example of the Convert.ToSByte( string ) and
// Convert.ToSByte( string, IFormatProvider ) methods.
using System;
using System.Globalization;

class ToSByteProviderDemo
{
    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 ConvertToSByte( string numericStr,
        IFormatProvider provider )
    {
        object defaultValue;
        object providerValue;

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

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

        Console.WriteLine( format, numericStr,
            defaultValue, providerValue );
    }

    public static void Main( )
    {
        // 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.NumberNegativePattern = 0;

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

        // Convert strings, with and without an IFormatProvider.
        ConvertToSByte( "123", provider );
        ConvertToSByte( "+123", provider );
        ConvertToSByte( "pos 123", provider );
        ConvertToSByte( "-123", provider );
        ConvertToSByte( "neg 123", provider );
        ConvertToSByte( "123.", provider );
        ConvertToSByte( "(123)", provider );
        ConvertToSByte( "128", provider );
        ConvertToSByte( "-129", provider );
    }
}

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

String to convert   Default/exception   Provider/exception
-----------------   -----------------   ------------------
123                 123                 123
+123                123                 FormatException
pos 123             FormatException     123
-123                -123                FormatException
neg 123             FormatException     -123
123.                FormatException     FormatException
(123)               FormatException     FormatException
128                 OverflowException   OverflowException
-129                OverflowException   FormatException
*/
' Example of the Convert.ToSByte( String ) and 
' Convert.ToSByte( String, IFormatProvider ) methods.
Imports System.Globalization

Module ToSByteProviderDemo

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

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

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

    Sub ConvertToSByte( numericStr As String, _
        provider As IFormatProvider )

        Dim defaultValue    As Object
        Dim providerValue   As Object

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

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

        Console.WriteLine( format, numericStr, _
            defaultValue, providerValue )
    End Sub

    Sub Main( )

        ' 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.NumberNegativePattern = 0

        Console.WriteLine( "This example of" & vbCrLf & _
            "  Convert.ToSByte( String ) and " & vbCrLf & _
            "  Convert.ToSByte( String, IFormatProvider ) " & _
            vbCrLf & "generates the following output. It " & _
            "converts several strings to " & vbCrLf & "SByte " & _
            "values, using default formatting " & _
            "or a NumberFormatInfo object." & vbCrLf )
        Console.WriteLine( format, "String to convert", _
            "Default/exception", "Provider/exception" )
        Console.WriteLine( format, "-----------------", _
            "-----------------", "------------------" )

        ' Convert strings, with and without an IFormatProvider.
        ConvertToSByte( "123", provider )
        ConvertToSByte( "+123", provider )
        ConvertToSByte( "pos 123", provider )
        ConvertToSByte( "-123", provider )
        ConvertToSByte( "neg 123", provider )
        ConvertToSByte( "123.", provider )
        ConvertToSByte( "(123)", provider )
        ConvertToSByte( "128", provider )
        ConvertToSByte( "-129", provider )
    End Sub 
End Module 

' This example of
'   Convert.ToSByte( String ) and
'   Convert.ToSByte( String, IFormatProvider )
' generates the following output. It converts several strings to
' SByte values, using default formatting or a NumberFormatInfo object.
' 
' String to convert   Default/exception   Provider/exception
' -----------------   -----------------   ------------------
' 123                 123                 123
' +123                123                 FormatException
' pos 123             FormatException     123
' -123                -123                FormatException
' neg 123             FormatException     -123
' 123.                FormatException     FormatException
' (123)               FormatException     FormatException
' 128                 OverflowException   OverflowException
' -129                OverflowException   FormatException

Comentários

provider é uma IFormatProvider instância que obtém um NumberFormatInfo objeto.provider is an IFormatProvider instance that obtains a NumberFormatInfo object. O objeto NumberFormatInfo fornece informações específicas da cultura sobre o formato de value.The NumberFormatInfo object provides culture-specific information about the format of value. Caso provider seja null, NumberFormatInfo da cultura atual é usado.If provider is null, the NumberFormatInfo for the current culture is used.

Se você preferir não tratar uma exceção se a conversão falhar, você poderá chamar o SByte.TryParse método em vez disso.If you prefer not to handle an exception if the conversion fails, you can call the SByte.TryParse method instead. Ele retorna um valor Boolean que indica se a conversão foi bem-sucedida ou falhou.It returns a Boolean value that indicates whether the conversion succeeded or failed.

Confira também

Aplica-se a

ToSByte(String, Int32)

Importante

Esta API não está em conformidade com CLS.

Converte a representação de cadeia de caracteres de um número em uma base especificada para um inteiro com sinal de 8 bits equivalente.Converts the string representation of a number in a specified base to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(System::String ^ value, int fromBase);
public static sbyte ToSByte (string value, int fromBase);
[System.CLSCompliant(false)]
public static sbyte ToSByte (string value, int fromBase);
static member ToSByte : string * int -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : string * int -> sbyte
Public Shared Function ToSByte (value As String, fromBase As Integer) As SByte

Parâmetros

value
String

Uma cadeia de caracteres que contém o número a ser convertido.A string that contains the number to convert.

fromBase
Int32

A base do número em value, que deve ser 2, 8, 10 ou 16.The base of the number in value, which must be 2, 8, 10, or 16.

Retornos

SByte

Um inteiro com sinal de 8 bits equivalente ao número em value ou 0 (zero), se value for null.An 8-bit signed integer that is equivalent to the number in value, or 0 (zero) if value is null.

Atributos

Exceções

fromBase não é 2, 8, 10 ou 16.fromBase is not 2, 8, 10, or 16.

- ou --or-

value, que representa um número assinado de base não 10, é prefixado com um sinal negativo.value, which represents a non-base 10 signed number, is prefixed with a negative sign.

value contém um caractere que não é um dígito válido na base especificada por fromBase.value contains a character that is not a valid digit in the base specified by fromBase. A mensagem de exceção indica que não há dígitos a serem convertidos caso o primeiro caractere em value seja inválido; do contrário, a mensagem indica que value contém caracteres à direita inválidos.The exception message indicates that there are no digits to convert if the first character in value is invalid; otherwise, the message indicates that value contains invalid trailing characters.

value, que representa um número assinado de base não 10, é prefixado com um sinal negativo.value, which represents a non-base 10 signed number, is prefixed with a negative sign.

- ou --or-

value representa um número que é menor que MinValue ou maior que MaxValue.value represents a number that is less than MinValue or greater than MaxValue.

Exemplos

O exemplo a seguir tenta interpretar os elementos em uma matriz de cadeia de caracteres como a representação binária, octal e hexadecimal de valores numéricos a fim de convertê-los em bytes não assinados.The following example attempts to interpret the elements in a string array as the binary, octal, and hexadecimal representation of numeric values in order to convert them to unsigned bytes.

using System;

public class Example
{
   public static void Main()
   {
      int[] baseValues = { 2, 8, 16};
      string[] values = { "FF", "81", "03", "11", "8F", "01", "1C", "111",
                          "123", "18A" };

      // Convert to each supported base.
      foreach (int baseValue in baseValues)
      {
         Console.WriteLine("Converting strings in base {0}:", baseValue);
         foreach (string value in values)
         {
            Console.Write("   '{0,-5}  -->  ", value + "'");
            try {
               Console.WriteLine(Convert.ToSByte(value, baseValue));
            }
            catch (FormatException) {
               Console.WriteLine("Bad Format");
            }
            catch (OverflowException) {
               Console.WriteLine("Out of Range");
            }
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//       Converting strings in base 2:
//          'FF'    -->  Bad Format
//          '81'    -->  Bad Format
//          '03'    -->  Bad Format
//          '11'    -->  3
//          '8F'    -->  Bad Format
//          '01'    -->  1
//          '1C'    -->  Bad Format
//          '111'   -->  7
//          '123'   -->  Bad Format
//          '18A'   -->  Bad Format
//
//       Converting strings in base 8:
//          'FF'    -->  Bad Format
//          '81'    -->  Bad Format
//          '03'    -->  3
//          '11'    -->  9
//          '8F'    -->  Bad Format
//          '01'    -->  1
//          '1C'    -->  Bad Format
//          '111'   -->  73
//          '123'   -->  83
//          '18A'   -->  Bad Format
//
//       Converting strings in base 16:
//          'FF'    -->  -1
//          '81'    -->  -127
//          '03'    -->  3
//          '11'    -->  17
//          '8F'    -->  -113
//          '01'    -->  1
//          '1C'    -->  28
//          '111'   -->  Out of Range
//          '123'   -->  Out of Range
//          '18A'   -->  Out of Range
Module Example
   Public Sub Main()
      Dim bases() As Integer = { 2, 8, 16}
      Dim values() As String = { "FF", "81", "03", "11", "8F", "01", "1C", _ 
                                 "111", "123", "18A" } 
   
      ' Convert to each supported base.
      For Each base As Integer In bases
         Console.WriteLine("Converting strings in base {0}:", base)
         For Each value As String In values
            Console.Write("   '{0,-5}  -->  ", value + "'")
            Try
               Console.WriteLine(Convert.ToSByte(value, base))
            Catch e As FormatException
               Console.WriteLine("Bad Format")
            Catch e As OverflowException
               Console.WriteLine("Out of Range")
            End Try   
         Next
         Console.WriteLine()
      Next
   End Sub
End Module
' The example displays the following output:
'       Converting strings in base 2:
'          'FF'    -->  Bad Format
'          '81'    -->  Bad Format
'          '03'    -->  Bad Format
'          '11'    -->  3
'          '8F'    -->  Bad Format
'          '01'    -->  1
'          '1C'    -->  Bad Format
'          '111'   -->  7
'          '123'   -->  Bad Format
'          '18A'   -->  Bad Format
'       
'       Converting strings in base 8:
'          'FF'    -->  Bad Format
'          '81'    -->  Bad Format
'          '03'    -->  3
'          '11'    -->  9
'          '8F'    -->  Bad Format
'          '01'    -->  1
'          '1C'    -->  Bad Format
'          '111'   -->  73
'          '123'   -->  83
'          '18A'   -->  Bad Format
'       
'       Converting strings in base 16:
'          'FF'    -->  -1
'          '81'    -->  -127
'          '03'    -->  3
'          '11'    -->  17
'          '8F'    -->  -113
'          '01'    -->  1
'          '1C'    -->  28
'          '111'   -->  Out of Range
'          '123'   -->  Out of Range
'          '18A'   -->  Out of Range

Comentários

Caso fromBase seja 16, é possível prefixar o número especificado pelo parâmetro value com "0x" ou "0X".If fromBase is 16, you can prefix the number specified by the value parameter with "0x" or "0X".

Como o sinal negativo não tem suporte para representações numéricas não-base 10, o ToSByte(String, Int32) método supõe que os números negativos usam a representação complementar de duas.Because the negative sign is not supported for non-base 10 numeric representations, the ToSByte(String, Int32) method assumes that negative numbers use two's complement representation. Em outras palavras, o método sempre interpreta o bit de ordem superior de um byte (bit 7) como seu bit de sinal.In other words, the method always interprets the high-order bit of a byte (bit 7) as its sign bit. Como resultado, é possível escrever um código no qual um número de 10 não base que está fora do intervalo do SByte tipo de dados é convertido em um SByte valor sem que o método emita uma exceção.As a result, it is possible to write code in which a non-base 10 number that is out of the range of the SByte data type is converted to an SByte value without the method throwing an exception. O exemplo a seguir converte MaxValue em sua representação de cadeia de caracteres hexadecimal e, em seguida, chama o ToSByte(String, Int32) método.The following example converts MaxValue to its hexadecimal string representation, and then calls the ToSByte(String, Int32) method. Em vez de lançar uma exceção, o método exibe a mensagem "o 0xFF é convertido em-1."Instead of throwing an exception, the method displays the message, "0xff converts to -1."

// Create a hexadecimal value out of range of the SByte type.
string value = Convert.ToString(byte.MaxValue, 16);
// Convert it back to a number.
try
{
   sbyte number = Convert.ToSByte(value, 16);
   Console.WriteLine("0x{0} converts to {1}.", value, number);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to a signed byte.", value);
}
' Create a hexadecimal value out of range of the SByte type.
Dim value As String = Convert.ToString(Byte.MaxValue, 16)
' Convert it back to a number.
Try
   Dim number As SByte = Convert.ToSByte(value, 16)
   Console.WriteLine("0x{0} converts to {1}.", value, number)
Catch e As OverflowException
   Console.WriteLine("Unable to convert '0x{0}' to a signed byte.", value)
End Try   

Durante a realização de operações binárias ou conversões numéricas, sempre é responsabilidade do desenvolvedor verificar se um método está usando a representação numérica apropriada para interpretar um valor específico.When performing binary operations or numeric conversions, it is always the responsibility of the developer to verify that a method is using the appropriate numeric representation to interpret a particular value. Como o exemplo a seguir ilustra, você pode garantir que o método manipule estouros de forma adequada determinando primeiro se um valor representa um tipo não assinado ou assinado ao convertê-lo em sua representação de cadeia de caracteres hexadecimal.As the following example illustrates, you can ensure that the method handles overflows appropriately by first determining whether a value represents an unsigned or a signed type when converting it to its hexadecimal string representation. Lançar uma exceção se o valor original era um tipo não assinado, mas a conversão de volta para um byte assinado produz um valor cujo bit de sinal está ativado.Throw an exception if the original value was an unsigned type but the conversion back to a signed byte yields a value whose sign bit is on.

// Create a hexadecimal value out of range of the SByte type.
byte sourceNumber = byte.MaxValue;
bool isSigned = Math.Sign(Convert.ToDouble(sourceNumber.GetType().GetField("MinValue").GetValue(null))) == -1;
string value = Convert.ToString(sourceNumber, 16);
sbyte targetNumber;
try
{
   targetNumber = Convert.ToSByte(value, 16);
   if (! isSigned && ((targetNumber & 0x80) != 0))
      throw new OverflowException();
   else
      Console.WriteLine("0x{0} converts to {1}.", value, targetNumber);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to a signed byte.", value);
}
// Displays the following to the console:
//    Unable to convert '0xff' to a signed byte.
' Create a negative hexadecimal value out of range of the Long type.
Dim sourceNumber As Byte = Byte.MaxValue
Dim isSigned As Boolean = Math.Sign(sourceNumber.MinValue) = -1
Dim value As String = Convert.ToString(sourceNumber, 16)
Dim targetNumber As SByte
Try
   targetNumber = Convert.ToSByte(value, 16)
   If Not isSigned And ((targetNumber And &H80) <> 0) Then
      Throw New OverflowException()
   Else 
      Console.WriteLine("0x{0} converts to {1}.", value, targetNumber)
   End If    
Catch e As OverflowException
   Console.WriteLine("Unable to convert '0x{0}' to a signed byte.", value)
End Try 
' Displays the following to the console:
'    Unable to convert '0xff' to a signed byte.     

Aplica-se a

ToSByte(Single)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do número de ponto flutuante de precisão simples especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified single-precision floating-point number to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(float value);
public static sbyte ToSByte (float value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (float value);
static member ToSByte : single -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : single -> sbyte
Public Shared Function ToSByte (value As Single) As SByte

Parâmetros

value
Single

O número de ponto flutuante de precisão simples a ser convertido.The single-precision floating-point number to convert.

Retornos

SByte

value, arredondado para o próximo inteiro com sinal de 8 bits.value, rounded to the nearest 8-bit signed integer. Caso value esteja entre dois números inteiros, o número par é retornado; ou seja, 4,5 é convertido em 4 e 5,5 é convertido em 6.If value is halfway between two whole numbers, the even number is returned; that is, 4.5 is converted to 4, and 5.5 is converted to 6.

Atributos

Exceções

value é maior que MaxValue ou menor que MinValue.value is greater than MaxValue or less than MinValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de Single valores em um byte assinado.The following example attempts to convert each element in an array of Single values to a signed byte.

object[] values = { true, -12, 163, 935, 'x', "104", "103.0", "-1",
                    "1.00e2", "One", 1.00e2};
sbyte result;

foreach (object value in values)
{
   try {
      result = Convert.ToSByte(value);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        value.GetType().Name, value,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        value.GetType().Name, value);
   }
   catch (FormatException) {
      Console.WriteLine("The {0} value {1} is not in a recognizable format.",
                        value.GetType().Name, value);
   }
   catch (InvalidCastException) {
      Console.WriteLine("No conversion to a Byte exists for the {0} value {1}.",
                        value.GetType().Name, value);
   }
}
// The example displays the following output:
//    Converted the Boolean value true to the SByte value 1.
//    Converted the Int32 value -12 to the SByte value -12.
//    The Int32 value 163 is outside the range of the SByte type.
//    The Int32 value 935 is outside the range of the SByte type.
//    Converted the Char value x to the SByte value 120.
//    Converted the String value 104 to the SByte value 104.
//    The String value 103.0 is not in a recognizable format.
//    Converted the String value -1 to the SByte value -1.
//    The String value 1.00e2 is not in a recognizable format.
//    The String value One is not in a recognizable format.
//    Converted the Double value 100 to the SByte value 100.
Dim values() As Object = { True, -12, 163, 935, "x"c, "104", "103.0", "-1", _
                           "1.00e2", "One", 1.00e2}
Dim result As SByte
For Each value As Object In values
   Try
      result = Convert.ToSByte(value)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        value.GetType().Name, value, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        value.GetType().Name, value)
   Catch e As FormatException
      Console.WriteLine("The {0} value {1} is not in a recognizable format.", _
                        value.GetType().Name, value)
   Catch e As InvalidCastException
      Console.WriteLine("No conversion to a Byte exists for the {0} value {1}.", _
                        value.GetType().Name, value)
                        
   End Try
Next                           
' The example displays the following output:
'    Converted the Boolean value True to the SByte value 1.
'    Converted the Int32 value -12 to the SByte value -12.
'    The Int32 value 163 is outside the range of the SByte type.
'    The Int32 value 935 is outside the range of the SByte type.
'    Converted the Char value x to the SByte value 120.
'    Converted the String value 104 to the SByte value 104.
'    The String value 103.0 is not in a recognizable format.
'    Converted the String value -1 to the SByte value -1.
'    The String value 1.00e2 is not in a recognizable format.
'    The String value One is not in a recognizable format.
'    Converted the Double value 100 to the SByte value 100.

Confira também

Aplica-se a

ToSByte(Object, IFormatProvider)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do objeto especificado em um inteiro com sinal de 8 bits, usando as informações de formatação específicas à cultura especificadas.Converts the value of the specified object to an 8-bit signed integer, using the specified culture-specific formatting information.

public:
 static System::SByte ToSByte(System::Object ^ value, IFormatProvider ^ provider);
public static sbyte ToSByte (object value, IFormatProvider provider);
[System.CLSCompliant(false)]
public static sbyte ToSByte (object value, IFormatProvider provider);
static member ToSByte : obj * IFormatProvider -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : obj * IFormatProvider -> sbyte
Public Shared Function ToSByte (value As Object, provider As IFormatProvider) As SByte

Parâmetros

value
Object

Um objeto que implementa a interface do IConvertible.An object that implements the IConvertible interface.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura.An object that supplies culture-specific formatting information.

Retornos

SByte

Um inteiro com sinal de 8 bits equivalente a value ou zero, se value for null.An 8-bit signed integer that is equivalent to value, or zero if value is null.

Atributos

Exceções

value não está em um formato adequado.value is not in an appropriate format.

value não implementa a interface IConvertible.value does not implement the IConvertible interface.

- ou --or-

A conversão não é suportada.The conversion is not supported.

value representa um número que é menor que MinValue ou maior que MaxValue.value represents a number that is less than MinValue or greater than MaxValue.

Exemplos

O exemplo a seguir define uma ByteString classe que armazena bytes assinados e não assinados como cadeias de caracteres hexadecimais, juntamente com um campo que indica o sinal do byte.The following example defines a ByteString class that stores both signed and unsigned bytes as hexadecimal strings along with a field that indicates the sign of the byte. A classe ByteString implementa a interface IConvertible.The ByteString class implements the IConvertible interface. Seu IConvertible.ToSByte método chama o Parse(String, IFormatProvider) método para executar a conversão.Its IConvertible.ToSByte method calls the Parse(String, IFormatProvider) method to perform the conversion. Se falhar, ele lançará um OverflowException .If it fails, it throws an OverflowException.

using System;
using System.Globalization;

public enum SignBit { Negative=-1, Zero=0, Positive=1 };

public struct ByteString : IConvertible
{
   private SignBit signBit;
   private string byteString;

   public SignBit Sign
   {
      set { signBit = value; }
      get { return signBit; }
   }

   public string Value
   {
      set {
         if (value.Trim().Length > 2)
            throw new ArgumentException("The string representation of a byte cannot have more than two characters.");
         else
            byteString = value;
      }
      get { return byteString; }
   }

   // IConvertible implementations.
   public TypeCode GetTypeCode() {
      return TypeCode.Object;
   }

   public bool ToBoolean(IFormatProvider provider)
   {
      if (signBit == SignBit.Zero)
         return false;
      else
         return true;
   }

   public byte ToByte(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is out of range of the Byte type.", Convert.ToSByte(byteString, 16)));
      else
         return Byte.Parse(byteString, NumberStyles.HexNumber);
   }

   public char ToChar(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative) {
         throw new OverflowException(String.Format("{0} is out of range of the Char type.", Convert.ToSByte(byteString, 16)));
      }
      else {
         byte byteValue = Byte.Parse(this.byteString, NumberStyles.HexNumber);
         return Convert.ToChar(byteValue);
      }
   }

   public DateTime ToDateTime(IFormatProvider provider)
   {
      throw new InvalidCastException("ByteString to DateTime conversion is not supported.");
   }

   public decimal ToDecimal(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
      {
         sbyte byteValue = SByte.Parse(byteString, NumberStyles.HexNumber);
         return Convert.ToDecimal(byteValue);
      }
      else
      {
         byte byteValue = Byte.Parse(byteString, NumberStyles.HexNumber);
         return Convert.ToDecimal(byteValue);
      }
   }

   public double ToDouble(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         return Convert.ToDouble(SByte.Parse(byteString, NumberStyles.HexNumber));
      else
         return Convert.ToDouble(Byte.Parse(byteString, NumberStyles.HexNumber));
   }

   public short ToInt16(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         return Convert.ToInt16(SByte.Parse(byteString, NumberStyles.HexNumber));
      else
         return Convert.ToInt16(Byte.Parse(byteString, NumberStyles.HexNumber));
   }

   public int ToInt32(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         return Convert.ToInt32(SByte.Parse(byteString, NumberStyles.HexNumber));
      else
         return Convert.ToInt32(Byte.Parse(byteString, NumberStyles.HexNumber));
   }

   public long ToInt64(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         return Convert.ToInt64(SByte.Parse(byteString, NumberStyles.HexNumber));
      else
         return Convert.ToInt64(Byte.Parse(byteString, NumberStyles.HexNumber));
   }

   public sbyte ToSByte(IFormatProvider provider)
   {
      try {
         return SByte.Parse(byteString, NumberStyles.HexNumber);
      }
      catch (OverflowException e) {
         throw new OverflowException(String.Format("{0} is outside the range of the SByte type.",
                                                   Byte.Parse(byteString, NumberStyles.HexNumber)), e);
      }
   }

   public float ToSingle(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         return Convert.ToSingle(SByte.Parse(byteString, NumberStyles.HexNumber));
      else
         return Convert.ToSingle(Byte.Parse(byteString, NumberStyles.HexNumber));
   }

   public string ToString(IFormatProvider provider)
   {
      return "0x" + this.byteString;
   }

   public object ToType(Type conversionType, IFormatProvider provider)
   {
      switch (Type.GetTypeCode(conversionType))
      {
         case TypeCode.Boolean:
            return this.ToBoolean(null);
         case TypeCode.Byte:
            return this.ToByte(null);
         case TypeCode.Char:
            return this.ToChar(null);
         case TypeCode.DateTime:
            return this.ToDateTime(null);
         case TypeCode.Decimal:
            return this.ToDecimal(null);
         case TypeCode.Double:
            return this.ToDouble(null);
         case TypeCode.Int16:
            return this.ToInt16(null);
         case TypeCode.Int32:
            return this.ToInt32(null);
         case TypeCode.Int64:
            return this.ToInt64(null);
         case TypeCode.Object:
            if (typeof(ByteString).Equals(conversionType))
               return this;
            else
               throw new InvalidCastException(String.Format("Conversion to a {0} is not supported.", conversionType.Name));
         case TypeCode.SByte:
            return this.ToSByte(null);
         case TypeCode.Single:
            return this.ToSingle(null);
         case TypeCode.String:
            return this.ToString(null);
         case TypeCode.UInt16:
            return this.ToUInt16(null);
         case TypeCode.UInt32:
            return this.ToUInt32(null);
         case TypeCode.UInt64:
            return this.ToUInt64(null);
         default:
            throw new InvalidCastException(String.Format("Conversion to {0} is not supported.", conversionType.Name));
      }
   }

   public UInt16 ToUInt16(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is outside the range of the UInt16 type.",
                                                   SByte.Parse(byteString, NumberStyles.HexNumber)));
      else
         return Convert.ToUInt16(Byte.Parse(byteString, NumberStyles.HexNumber));
   }

   public UInt32 ToUInt32(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is outside the range of the UInt32 type.",
                                                   SByte.Parse(byteString, NumberStyles.HexNumber)));
      else
         return Convert.ToUInt32(Byte.Parse(byteString, NumberStyles.HexNumber));
   }

   public UInt64 ToUInt64(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is outside the range of the UInt64 type.",
                                                   SByte.Parse(byteString, NumberStyles.HexNumber)));
      else
         return Convert.ToUInt64(Byte.Parse(byteString, NumberStyles.HexNumber));
   }
}
Imports System.Globalization

Public Enum SignBit As Integer
   Positive = 1
   Zero = 0
   Negative = -1
End Enum

Public Structure ByteString : Implements IConvertible
   Private signBit As SignBit
   Private byteString As String
   
   Public Property Sign As SignBit
      Set
         signBit = value
      End Set
      Get
         Return signBit
      End Get
   End Property
   
   Public Property Value As String
      Set
         If value.Trim().Length > 2 Then
            Throw New ArgumentException("The string representation of a byte cannot have more than two characters.")
         Else
            byteString = value
         End If   
      End Set
      Get
         Return byteString
      End Get
   End Property
   
   ' IConvertible implementations.
   Public Function GetTypeCode() As TypeCode _
                   Implements IConvertible.GetTypeCode
      Return TypeCode.Object
   End Function
   
   Public Function ToBoolean(provider As IFormatProvider) As Boolean _
                   Implements IConvertible.ToBoolean
      If signBit = SignBit.Zero Then
         Return False
      Else
         Return True
      End If
   End Function 
   
   Public Function ToByte(provider As IFormatProvider) As Byte _
                   Implements IConvertible.ToByte
      If signBit = signBit.Negative Then
         Throw New OverflowException(String.Format("{0} is out of range of the Byte type.", Convert.ToSByte(byteString, 16))) 
      Else
         Return Byte.Parse(byteString, NumberStyles.HexNumber)
      End If       
   End Function
   
   Public Function ToChar(provider As IFormatProvider) As Char _
                   Implements IConvertible.ToChar
      If signBit = signBit.Negative Then 
         Throw New OverflowException(String.Format("{0} is out of range of the Char type.", Convert.ToSByte(byteString, 16)))
      Else
         Dim byteValue As Byte = Byte.Parse(Me.byteString, NumberStyles.HexNumber)
         Return Convert.ToChar(byteValue)
      End If                
   End Function 
   
   Public Function ToDateTime(provider As IFormatProvider) As Date _
                   Implements IConvertible.ToDateTime
      Throw New InvalidCastException("ByteString to DateTime conversion is not supported.")
   End Function
   
   Public Function ToDecimal(provider As IFormatProvider) As Decimal _
                   Implements IConvertible.ToDecimal
      If signBit = signBit.Negative Then
         Dim byteValue As SByte = SByte.Parse(byteString, NumberStyles.HexNumber)
         Return Convert.ToDecimal(byteValue)
      Else
         Dim byteValue As Byte = Byte.Parse(byteString, NumberStyles.HexNumber)
         Return Convert.ToDecimal(byteValue)
      End If
   End Function
   
   Public Function ToDouble(provider As IFormatProvider) As Double _
                   Implements IConvertible.ToDouble
      If signBit = signBit.Negative Then
         Return Convert.ToDouble(SByte.Parse(byteString, NumberStyles.HexNumber))
      Else
         Return Convert.ToDouble(Byte.Parse(byteString, NumberStyles.HexNumber))
      End If   
   End Function   
   
   Public Function ToInt16(provider As IFormatProvider) As Int16 _
                   Implements IConvertible.ToInt16
      If signBit = signBit.Negative Then
         Return Convert.ToInt16(SByte.Parse(byteString, NumberStyles.HexNumber))
      Else
         Return Convert.ToInt16(Byte.Parse(byteString, NumberStyles.HexNumber))
      End If   
   End Function
   
   Public Function ToInt32(provider As IFormatProvider) As Int32 _
                   Implements IConvertible.ToInt32
      If signBit = signBit.Negative Then
         Return Convert.ToInt32(SByte.Parse(byteString, NumberStyles.HexNumber))
      Else
         Return Convert.ToInt32(Byte.Parse(byteString, NumberStyles.HexNumber))
      End If   
   End Function
   
   Public Function ToInt64(provider As IFormatProvider) As Int64 _
                   Implements IConvertible.ToInt64
      If signBit = signBit.Negative Then
         Return Convert.ToInt64(SByte.Parse(byteString, NumberStyles.HexNumber))
      Else
         Return Convert.ToInt64(Byte.Parse(byteString, NumberStyles.HexNumber))
      End If   
   End Function
   
   Public Function ToSByte(provider As IFormatProvider) As SByte _
                   Implements IConvertible.ToSByte
      Try
         Return SByte.Parse(byteString, NumberStyles.HexNumber)
      Catch e As OverflowException
         Throw New OverflowException(String.Format("{0} is outside the range of the SByte type.", _
                                                   Byte.Parse(byteString, NumberStyles.HexNumber)))
      End Try   
   End Function

   Public Function ToSingle(provider As IFormatProvider) As Single _
                   Implements IConvertible.ToSingle
      If signBit = signBit.Negative Then
         Return Convert.ToSingle(SByte.Parse(byteString, NumberStyles.HexNumber))
      Else
         Return Convert.ToSingle(Byte.Parse(byteString, NumberStyles.HexNumber))
      End If   
   End Function

   Public Overloads Function ToString(provider As IFormatProvider) As String _
                   Implements IConvertible.ToString
      Return Me.byteString
   End Function
   
   Public Function ToType(conversionType As Type, provider As IFormatProvider) As Object _
                   Implements IConvertible.ToType
      Select Case Type.GetTypeCode(conversionType)
         Case TypeCode.Boolean 
            Return Me.ToBoolean(Nothing)
         Case TypeCode.Byte
            Return Me.ToByte(Nothing)
         Case TypeCode.Char
            Return Me.ToChar(Nothing)
         Case TypeCode.DateTime
            Return Me.ToDateTime(Nothing)
         Case TypeCode.Decimal
            Return Me.ToDecimal(Nothing)
         Case TypeCode.Double
            Return Me.ToDouble(Nothing)
         Case TypeCode.Int16
            Return Me.ToInt16(Nothing)
         Case TypeCode.Int32
            Return Me.ToInt32(Nothing)
         Case TypeCode.Int64
            Return Me.ToInt64(Nothing)
         Case TypeCode.Object
            If GetType(ByteString).Equals(conversionType) Then
               Return Me
            Else
               Throw New InvalidCastException(String.Format("Conversion to a {0} is not supported.", conversionType.Name))
            End If 
         Case TypeCode.SByte
            Return Me.ToSByte(Nothing)
         Case TypeCode.Single
            Return Me.ToSingle(Nothing)
         Case TypeCode.String
            Return Me.ToString(Nothing)
         Case TypeCode.UInt16
            Return Me.ToUInt16(Nothing)
         Case TypeCode.UInt32
            Return Me.ToUInt32(Nothing)
         Case TypeCode.UInt64
            Return Me.ToUInt64(Nothing)   
         Case Else
            Throw New InvalidCastException(String.Format("Conversion to {0} is not supported.", conversionType.Name))   
            
      End Select
   End Function
   
   Public Function ToUInt16(provider As IFormatProvider) As UInt16 _
                   Implements IConvertible.ToUInt16
      If signBit = signBit.Negative Then
         Throw New OverflowException(String.Format("{0} is outside the range of the UInt16 type.", _
                                                   SByte.Parse(byteString, NumberStyles.HexNumber)))
      Else
         Return Convert.ToUInt16(Byte.Parse(byteString, NumberStyles.HexNumber))
      End If   
   End Function

   Public Function ToUInt32(provider As IFormatProvider) As UInt32 _
                   Implements IConvertible.ToUInt32
      If signBit = signBit.Negative Then
         Throw New OverflowException(String.Format("{0} is outside the range of the UInt32 type.", _
                                                   SByte.Parse(byteString, NumberStyles.HexNumber)))
      Else
         Return Convert.ToUInt32(Byte.Parse(byteString, NumberStyles.HexNumber))
      End If   
   End Function
   
   Public Function ToUInt64(provider As IFormatProvider) As UInt64 _
                   Implements IConvertible.ToUInt64
      If signBit = signBit.Negative Then
         Throw New OverflowException(String.Format("{0} is outside the range of the UInt64 type.", _
                                                   SByte.Parse(byteString, NumberStyles.HexNumber)))
      Else
         Return Convert.ToUInt64(Byte.Parse(byteString, NumberStyles.HexNumber))
      End If   
   End Function
   
End Structure

O exemplo a seguir mostra como a IConvertible.ToSByte implementação da ByteString classe é chamada pelo Convert.ToSByte(Object, IFormatProvider) método.The following example shows how the IConvertible.ToSByte implementation of the ByteString class is called by the Convert.ToSByte(Object, IFormatProvider) method.

public class Class1
{
   public static void Main()
   {
      sbyte positiveByte = 120;
      sbyte negativeByte = -101;

      ByteString positiveString = new ByteString();
      positiveString.Sign = (SignBit) Math.Sign(positiveByte);
      positiveString.Value = positiveByte.ToString("X2");

      ByteString negativeString = new ByteString();
      negativeString.Sign = (SignBit) Math.Sign(negativeByte);
      negativeString.Value = negativeByte.ToString("X2");

      try {
         Console.WriteLine("'{0}' converts to {1}.", positiveString.Value, Convert.ToSByte(positiveString));
      }
      catch (OverflowException) {
         Console.WriteLine("0x{0} is outside the range of the Byte type.", positiveString.Value);
      }

      try {
         Console.WriteLine("'{0}' converts to {1}.", negativeString.Value, Convert.ToSByte(negativeString));
      }
      catch (OverflowException) {
         Console.WriteLine("0x{0} is outside the range of the Byte type.", negativeString.Value);
      }
   }
}
// The example displays the following output:
//       '78' converts to 120.
//       '9B' converts to -101.
Module modMain
   Public Sub Main()
      Dim positiveByte As SByte = 120
      Dim negativeByte As SByte = -101
      
      
      Dim positiveString As New ByteString()
      positiveString.Sign = CType(Math.Sign(positiveByte), SignBit)
      positiveString.Value = positiveByte.ToString("X2")
      
      Dim negativeString As New ByteString()
      negativeString.Sign = CType(Math.Sign(negativeByte), SignBit)
      negativeString.Value = negativeByte.ToString("X2")
      
      Try
         Console.WriteLine("'{0}' converts to {1}.", positiveString.Value, Convert.ToSByte(positiveString))
      Catch e As OverflowException
         Console.WriteLine("0x{0} is outside the range of the Byte type.", positiveString.Value)
      End Try

      Try
         Console.WriteLine("'{0}' converts to {1}.", negativeString.Value, Convert.ToSByte(negativeString))
      Catch e As OverflowException
         Console.WriteLine("0x{0} is outside the range of the Byte type.", negativeString.Value)
      End Try   
   End Sub
End Module
' The example dosplays the following output:
'       '78' converts to 120.
'       '9B' converts to -101.

Comentários

provider permite que o usuário especifique informações de conversão específicas de cultura sobre o conteúdo de value .provider enables the user to specify culture-specific conversion information about the contents of value. Por exemplo, se value fosse um String que representa um número, provider poderia fornecer informações específicas de cultura sobre a notação usada para representar esse número.For example, if value is a String that represents a number, provider could supply culture-specific information about the notation used to represent that number.

Os tipos de base ignoram provider; no entanto, o parâmetro pode ser usado caso value seja um tipo definido pelo usuário que implementa a interface IConvertible.The base types ignore provider; however, the parameter may be used if value is a user-defined type that implements the IConvertible interface.

Aplica-se a

ToSByte(SByte)

Importante

Esta API não está em conformidade com CLS.

Retorna o inteiro com sinal de 8 bits especificado; nenhuma conversão real é executada.Returns the specified 8-bit signed integer; no actual conversion is performed.

public:
 static System::SByte ToSByte(System::SByte value);
public static sbyte ToSByte (sbyte value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (sbyte value);
static member ToSByte : sbyte -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : sbyte -> sbyte
Public Shared Function ToSByte (value As SByte) As SByte

Parâmetros

value
SByte

O inteiro com sinal de 8 bits a ser retornado.The 8-bit signed integer to return.

Retornos

SByte

value é retornado inalterado.value is returned unchanged.

Atributos

Aplica-se a

ToSByte(Int32)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do inteiro com sinal de 32 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 32-bit signed integer to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(int value);
public static sbyte ToSByte (int value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (int value);
static member ToSByte : int -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : int -> sbyte
Public Shared Function ToSByte (value As Integer) As SByte

Parâmetros

value
Int32

O inteiro com sinal de 32 bits a converter.The 32-bit signed integer to convert.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é maior que MaxValue ou menor que MinValue.value is greater than MaxValue or less than MinValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de inteiros assinados em um byte assinado.The following example attempts to convert each element in an array of signed integers to a signed byte.

int[] numbers = { Int32.MinValue, -1, 0, 121, 340, Int32.MaxValue };
sbyte result;

foreach (int number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    The Int32 value -2147483648 is outside the range of the SByte type.
//    Converted the Int32 value -1 to the SByte value -1.
//    Converted the Int32 value 0 to the SByte value 0.
//    Converted the Int32 value 121 to the SByte value 121.
//    The Int32 value 340 is outside the range of the SByte type.
//    The Int32 value 2147483647 is outside the range of the SByte type.
Dim numbers() As Integer = { Int32.MinValue, -1, 0, 121, 340, Int32.MaxValue }
Dim result As SByte
For Each number As Integer In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next
' The example displays the following output:
'    The Int32 value -2147483648 is outside the range of the SByte type.
'    Converted the Int32 value -1 to the SByte value -1.
'    Converted the Int32 value 0 to the SByte value 0.
'    Converted the Int32 value 121 to the SByte value 121.
'    The Int32 value 340 is outside the range of the SByte type.
'    The Int32 value 2147483647 is outside the range of the SByte type.

Aplica-se a

ToSByte(Int64)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do inteiro com sinal de 64 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 64-bit signed integer to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(long value);
public static sbyte ToSByte (long value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (long value);
static member ToSByte : int64 -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : int64 -> sbyte
Public Shared Function ToSByte (value As Long) As SByte

Parâmetros

value
Int64

O inteiro com sinal de 64 bits a ser convertido.The 64-bit signed integer to convert.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é maior que MaxValue ou menor que MinValue.value is greater than MaxValue or less than MinValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de inteiros longos em um byte assinado.The following example attempts to convert each element in an array of long integers to a signed byte.

long[] numbers = { Int64.MinValue, -1, 0, 121, 340, Int64.MaxValue };
sbyte result;
foreach (long number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    The Int64 value -9223372036854775808 is outside the range of the SByte type.
//    Converted the Int64 value -1 to the SByte value -1.
//    Converted the Int64 value 0 to the SByte value 0.
//    Converted the Int64 value 121 to the SByte value 121.
//    The Int64 value 340 is outside the range of the SByte type.
//    The Int64 value 9223372036854775807 is outside the range of the SByte type.
Dim numbers() As Long = { Int64.MinValue, -1, 0, 121, 340, Int64.MaxValue }
Dim result As SByte
For Each number As Long In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next
' The example displays the following output:
'    The Int64 value -9223372036854775808 is outside the range of the SByte type.
'    Converted the Int64 value -1 to the SByte value -1.
'    Converted the Int64 value 0 to the SByte value 0.
'    Converted the Int64 value 121 to the SByte value 121.
'    The Int64 value 340 is outside the range of the SByte type.
'    The Int64 value 9223372036854775807 is outside the range of the SByte type.

Aplica-se a

ToSByte(Object)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do objeto especificado em um inteiro com sinal de 8 bits.Converts the value of the specified object to an 8-bit signed integer.

public:
 static System::SByte ToSByte(System::Object ^ value);
public static sbyte ToSByte (object value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (object value);
static member ToSByte : obj -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : obj -> sbyte
Public Shared Function ToSByte (value As Object) As SByte

Parâmetros

value
Object

Um objeto que implementa a interface IConvertible ou null.An object that implements the IConvertible interface, or null.

Retornos

SByte

Um inteiro com sinal de 8 bits equivalente a value ou zero, se value for null.An 8-bit signed integer that is equivalent to value, or zero if value is null.

Atributos

Exceções

value não está em um formato adequado.value is not in an appropriate format.

value não implementa a interface IConvertible.value does not implement the IConvertible interface.

- ou --or-

A conversão não é suportada.The conversion is not supported.

value representa um número que é menor que MinValue ou maior que MaxValue.value represents a number that is less than MinValue or greater than MaxValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de objeto em um byte assinado.The following example attempts to convert each element in an object array to a signed byte.

object[] values = { true, -12, 163, 935, 'x', "104", "103.0", "-1",
                    "1.00e2", "One", 1.00e2};
sbyte result;

foreach (object value in values)
{
   try {
      result = Convert.ToSByte(value);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        value.GetType().Name, value,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        value.GetType().Name, value);
   }
   catch (FormatException) {
      Console.WriteLine("The {0} value {1} is not in a recognizable format.",
                        value.GetType().Name, value);
   }
   catch (InvalidCastException) {
      Console.WriteLine("No conversion to a Byte exists for the {0} value {1}.",
                        value.GetType().Name, value);
   }
}
// The example displays the following output:
//    Converted the Boolean value true to the SByte value 1.
//    Converted the Int32 value -12 to the SByte value -12.
//    The Int32 value 163 is outside the range of the SByte type.
//    The Int32 value 935 is outside the range of the SByte type.
//    Converted the Char value x to the SByte value 120.
//    Converted the String value 104 to the SByte value 104.
//    The String value 103.0 is not in a recognizable format.
//    Converted the String value -1 to the SByte value -1.
//    The String value 1.00e2 is not in a recognizable format.
//    The String value One is not in a recognizable format.
//    Converted the Double value 100 to the SByte value 100.
Dim values() As Object = { True, -12, 163, 935, "x"c, "104", "103.0", "-1", _
                           "1.00e2", "One", 1.00e2}
Dim result As SByte
For Each value As Object In values
   Try
      result = Convert.ToSByte(value)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        value.GetType().Name, value, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        value.GetType().Name, value)
   Catch e As FormatException
      Console.WriteLine("The {0} value {1} is not in a recognizable format.", _
                        value.GetType().Name, value)
   Catch e As InvalidCastException
      Console.WriteLine("No conversion to a Byte exists for the {0} value {1}.", _
                        value.GetType().Name, value)
                        
   End Try
Next                           
' The example displays the following output:
'    Converted the Boolean value True to the SByte value 1.
'    Converted the Int32 value -12 to the SByte value -12.
'    The Int32 value 163 is outside the range of the SByte type.
'    The Int32 value 935 is outside the range of the SByte type.
'    Converted the Char value x to the SByte value 120.
'    Converted the String value 104 to the SByte value 104.
'    The String value 103.0 is not in a recognizable format.
'    Converted the String value -1 to the SByte value -1.
'    The String value 1.00e2 is not in a recognizable format.
'    The String value One is not in a recognizable format.
'    Converted the Double value 100 to the SByte value 100.

Comentários

O valor de retorno é o resultado da invocação do IConvertible.ToSByte método do tipo subjacente de value .The return value is the result of invoking the IConvertible.ToSByte method of the underlying type of value.

Aplica-se a

ToSByte(Byte)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do inteiro sem sinal de 8 bits especificado no inteiro com sinal de 8 bits equivalente.Converts the value of the specified 8-bit unsigned integer to the equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(System::Byte value);
public static sbyte ToSByte (byte value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (byte value);
static member ToSByte : byte -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : byte -> sbyte
Public Shared Function ToSByte (value As Byte) As SByte

Parâmetros

value
Byte

O inteiro sem sinal de 8 bits a ser convertido.The 8-bit unsigned integer to convert.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é maior que MaxValue.value is greater than MaxValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de bytes em um byte assinado.The following example attempts to convert each element in a byte array to a signed byte.

byte[] numbers = { Byte.MinValue, 10, 100, Byte.MaxValue };
sbyte result;

foreach (byte number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    Converted the Byte value 0 to the SByte value 0.
//    Converted the Byte value 10 to the SByte value 10.
//    Converted the Byte value 100 to the SByte value 100.
//    The Byte value 255 is outside the range of the SByte type.
Dim numbers() As Byte = { Byte.MinValue, 10, 100, Byte.MaxValue }
Dim result As SByte
For Each number As Byte In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next
' The example displays the following output:
'    Converted the Byte value 0 to the SByte value 0.
'    Converted the Byte value 10 to the SByte value 10.
'    Converted the Byte value 100 to the SByte value 100.
'    The Byte value 255 is outside the range of the SByte type.

Aplica-se a

ToSByte(Char)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do caractere Unicode especificado no inteiro com sinal de 8 bits equivalente.Converts the value of the specified Unicode character to the equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(char value);
public static sbyte ToSByte (char value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (char value);
static member ToSByte : char -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : char -> sbyte
Public Shared Function ToSByte (value As Char) As SByte

Parâmetros

value
Char

O caractere Unicode a ser convertido.The Unicode character to convert.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é maior que MaxValue.value is greater than MaxValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de Char valores em um byte assinado.The following example attempts to convert each element in an array of Char values to a signed byte.

char[] chars = { 'a', 'z', '\u0007', '\u0200', '\u1023' };
foreach (char ch in chars)
{
   try {
      sbyte result = Convert.ToSByte(ch);
      Console.WriteLine("{0} is converted to {1}.", ch, result);
   }
   catch (OverflowException) {
      Console.WriteLine("Unable to convert u+{0} to a byte.",
                        Convert.ToInt16(ch).ToString("X4"));
   }
}
// The example displays the following output:
//    a is converted to 97.
//    z is converted to 122.
//     is converted to 7.
//    Unable to convert u+00C8 to a byte.
//    Unable to convert u+03FF to a byte.
Dim chars() As Char = { "a"c, "z"c, ChrW(7), ChrW(200), ChrW(1023) }
For Each ch As Char in chars
   Try
      Dim result As SByte = Convert.ToSByte(ch)
      Console.WriteLine("{0} is converted to {1}.", ch, result)
   Catch e As OverflowException
      Console.WriteLine("Unable to convert u+{0} to a byte.", _
                        AscW(ch).ToString("X4"))
   End Try
Next   
' The example displays the following output:
'    a is converted to 97.
'    z is converted to 122.
'     is converted to 7.
'    Unable to convert u+00C8 to a byte.
'    Unable to convert u+03FF to a byte.

Aplica-se a

ToSByte(DateTime)

Importante

Esta API não está em conformidade com CLS.

A chamada desse método sempre lança InvalidCastException.Calling this method always throws InvalidCastException.

public:
 static System::SByte ToSByte(DateTime value);
public static sbyte ToSByte (DateTime value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (DateTime value);
static member ToSByte : DateTime -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : DateTime -> sbyte
Public Shared Function ToSByte (value As DateTime) As SByte

Parâmetros

value
DateTime

O valor de data e tempo a ser convertido.The date and time value to convert.

Retornos

SByte

Não há suporte para esta conversão.This conversion is not supported. Nenhum valor é retornado.No value is returned.

Atributos

Exceções

Não há suporte para esta conversão.This conversion is not supported.

Aplica-se a

ToSByte(Boolean)

Importante

Esta API não está em conformidade com CLS.

Converte o valor booliano especificado para o inteiro com sinal de 8 bits equivalente.Converts the specified Boolean value to the equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(bool value);
public static sbyte ToSByte (bool value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (bool value);
static member ToSByte : bool -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : bool -> sbyte
Public Shared Function ToSByte (value As Boolean) As SByte

Parâmetros

value
Boolean

O valor booliano a ser convertido.The Boolean value to convert.

Retornos

SByte

O número 1 caso value seja true; do contrário, 0.The number 1 if value is true; otherwise, 0.

Atributos

Exemplos

O exemplo a seguir converte os valores Boolianos true e false em valores de bytes assinados.The following example converts the Boolean values true and false to signed byte values.

bool falseFlag = false;
bool trueFlag = true;

Console.WriteLine("{0} converts to {1}.", falseFlag,
                  Convert.ToSByte(falseFlag));
Console.WriteLine("{0} converts to {1}.", trueFlag,
                  Convert.ToSByte(trueFlag));
// The example displays the following output:
//       false converts to 0.
//       true converts to 1.
Dim falseFlag As Boolean = False
Dim trueFlag As Boolean = True

Console.WriteLine("{0} converts to {1}.", falseFlag, _
                  Convert.ToSByte(falseFlag))
Console.WriteLine("{0} converts to {1}.", trueFlag, _
                  Convert.ToSByte(trueFlag))
' The example displays the following output:
'       False converts to 0.
'       True converts to 1.

Aplica-se a

ToSByte(Double)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do número de ponto flutuante de precisão dupla especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified double-precision floating-point number to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(double value);
public static sbyte ToSByte (double value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (double value);
static member ToSByte : double -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : double -> sbyte
Public Shared Function ToSByte (value As Double) As SByte

Parâmetros

value
Double

O número de ponto flutuante de precisão dupla a ser convertido.The double-precision floating-point number to convert.

Retornos

SByte

value, arredondado para o próximo inteiro com sinal de 8 bits.value, rounded to the nearest 8-bit signed integer. Caso value esteja entre dois números inteiros, o número par é retornado; ou seja, 4,5 é convertido em 4 e 5,5 é convertido em 6.If value is halfway between two whole numbers, the even number is returned; that is, 4.5 is converted to 4, and 5.5 is converted to 6.

Atributos

Exceções

value é maior que MaxValue ou menor que MinValue.value is greater than MaxValue or less than MinValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de Double valores em um byte assinado.The following example attempts to convert each element in an array of Double values to a signed byte.

double[] numbers = { Double.MinValue, -129.5, -12.7, 0, 16,
                     103.6, 255.0, 1.63509e17, Double.MaxValue};
sbyte result;

foreach (double number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    The Double value -1.79769313486232E+308 is outside the range of the SByte type.
//    The Double value -129.5 is outside the range of the SByte type.
//    Converted the Double value -12.7 to the SByte value -13.
//    Converted the Double value 0 to the SByte value 0.
//    Converted the Double value 16 to the SByte value 16.
//    Converted the Double value 103.6 to the SByte value 104.
//    The Double value 255 is outside the range of the SByte type.
//    The Double value 1.63509E+17 is outside the range of the SByte type.
//    The Double value 1.79769313486232E+308 is outside the range of the SByte type.
Dim numbers() As Double = { Double.MinValue, -129.5, -12.7, 0, 16, _
                            103.6, 255.0, 1.63509e17, Double.MaxValue}
Dim result As SByte

For Each number As Double In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next                                  
' The example displays the following output:
'    The Double value -1.79769313486232E+308 is outside the range of the SByte type.
'    The Double value -129.5 is outside the range of the SByte type.
'    Converted the Double value -12.7 to the SByte value -13.
'    Converted the Double value 0 to the SByte value 0.
'    Converted the Double value 16 to the SByte value 16.
'    Converted the Double value 103.6 to the SByte value 104.
'    The Double value 255 is outside the range of the SByte type.
'    The Double value 1.63509E+17 is outside the range of the SByte type.
'    The Double value 1.79769313486232E+308 is outside the range of the SByte type.

Confira também

Aplica-se a

ToSByte(Int16)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do inteiro com sinal de 16 bits especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified 16-bit signed integer to the equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(short value);
public static sbyte ToSByte (short value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (short value);
static member ToSByte : int16 -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : int16 -> sbyte
Public Shared Function ToSByte (value As Short) As SByte

Parâmetros

value
Int16

O inteiro assinado de 16 bits a ser convertido.The 16-bit signed integer to convert.

Retornos

SByte

Um inteiro assinado de 8 bits equivalente a value.An 8-bit signed integer that is equivalent to value.

Atributos

Exceções

value é maior que MaxValue ou menor que MinValue.value is greater than MaxValue or less than MinValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de inteiros de 16 bits assinados em um byte assinado.The following example attempts to convert each element in an array of signed 16-bit integers to a signed byte.

short[] numbers = { Int16.MinValue, -1, 0, 121, 340, Int16.MaxValue };
sbyte result;
foreach (short number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    The Int16 value -32768 is outside the range of the SByte type.
//    Converted the Int16 value -1 to the SByte value -1.
//    Converted the Int16 value 0 to the SByte value 0.
//    Converted the Int16 value 121 to the SByte value 121.
//    The Int16 value 340 is outside the range of the SByte type.
//    The Int16 value 32767 is outside the range of the SByte type.
Dim numbers() As Short = { Int16.MinValue, -1, 0, 121, 340, Int16.MaxValue }
Dim result As SByte
For Each number As Short In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next
' The example displays the following output:
'    The Int16 value -32768 is outside the range of the SByte type.
'    Converted the Int16 value -1 to the SByte value -1.
'    Converted the Int16 value 0 to the SByte value 0.
'    Converted the Int16 value 121 to the SByte value 121.
'    The Int16 value 340 is outside the range of the SByte type.
'    The Int16 value 32767 is outside the range of the SByte type.

Aplica-se a

ToSByte(Decimal)

Importante

Esta API não está em conformidade com CLS.

Converte o valor do número decimal especificado em um inteiro com sinal de 8 bits equivalente.Converts the value of the specified decimal number to an equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(System::Decimal value);
public static sbyte ToSByte (decimal value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (decimal value);
static member ToSByte : decimal -> sbyte
[<System.CLSCompliant(false)>]
static member ToSByte : decimal -> sbyte
Public Shared Function ToSByte (value As Decimal) As SByte

Parâmetros

value
Decimal

O número decimal a ser convertido.The decimal number to convert.

Retornos

SByte

value, arredondado para o próximo inteiro com sinal de 8 bits.value, rounded to the nearest 8-bit signed integer. Caso value esteja entre dois números inteiros, o número par é retornado; ou seja, 4,5 é convertido em 4 e 5,5 é convertido em 6.If value is halfway between two whole numbers, the even number is returned; that is, 4.5 is converted to 4, and 5.5 is converted to 6.

Atributos

Exceções

value é maior que MaxValue ou menor que MinValue.value is greater than MaxValue or less than MinValue.

Exemplos

O exemplo a seguir tenta converter cada elemento em uma matriz de Decimal valores em um byte assinado.The following example attempts to convert each element in an array of Decimal values to a signed byte.

decimal[] numbers = { Decimal.MinValue, -129.5m, -12.7m, 0m, 16m,
                      103.6m, 255.0m, Decimal.MaxValue };
sbyte result;

foreach (decimal number in numbers)
{
   try {
      result = Convert.ToSByte(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    The Decimal value -79228162514264337593543950335 is outside the range of the SByte type.
//    The Decimal value -129.5 is outside the range of the SByte type.
//    Converted the Decimal value -12.7 to the SByte value -13.
//    Converted the Decimal value 0 to the SByte value 0.
//    Converted the Decimal value 16 to the SByte value 16.
//    Converted the Decimal value 103.6 to the SByte value 104.
//    The Decimal value 255 is outside the range of the SByte type.
//    The Decimal value 79228162514264337593543950335 is outside the range of the SByte type.
Dim numbers() As Decimal = { Decimal.MinValue, -129.5d, -12.7d, 0d, 16d, _
                             103.6d, 255.0d, Decimal.MaxValue }
Dim result As SByte

For Each number As Decimal In numbers
   Try
      result = Convert.ToSByte(number)
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                        number.GetType().Name, number, _
                        result.GetType().Name, result)
   Catch e As OverflowException
      Console.WriteLine("The {0} value {1} is outside the range of the SByte type.", _
                        number.GetType().Name, number)
   End Try
Next                         
' The example displays the following output:
'    The Decimal value -79228162514264337593543950335 is outside the range of the SByte type.
'    The Decimal value -129.5 is outside the range of the SByte type.
'    Converted the Decimal value -12.7 to the SByte value -13.
'    Converted the Decimal value 0 to the SByte value 0.
'    Converted the Decimal value 16 to the SByte value 16.
'    Converted the Decimal value 103.6 to the SByte value 104.
'    The Decimal value 255 is outside the range of the SByte type.
'    The Decimal value 79228162514264337593543950335 is outside the range of the SByte type.

Confira também

Aplica-se a