SByte.TryParse Método

Definição

Converte a representação da cadeia de um número para o seu equivalente inteiro com sinal de 8 bits. Um código de retorno indica se a conversão teve sucesso ou falhou.

Sobrecargas

Name Description
TryParse(String, SByte)

Tenta converter a representação da cadeia de um número para o seu SByte equivalente e devolve um valor que indica se a conversão foi bem-sucedida.

TryParse(ReadOnlySpan<Char>, SByte)

Tenta converter a representação span de um número para o seu SByte equivalente e retorna um valor que indica se a conversão teve sucesso.

TryParse(String, NumberStyles, IFormatProvider, SByte)

Tenta converter a representação em cadeia de um número num estilo especificado e formato específico de cultura para o seu SByte equivalente, e retorna um valor que indica se a conversão teve sucesso.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, SByte)

Tenta converter a representação span de um número num estilo especificado e formato específico de cultura para o seu SByte equivalente, e devolve um valor que indica se a conversão foi bem-sucedida.

TryParse(String, SByte)

Importante

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

Tenta converter a representação da cadeia de um número para o seu SByte equivalente e devolve um valor que indica se a conversão foi bem-sucedida.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::SByte % result);
[System.CLSCompliant(false)]
public static bool TryParse(string s, out sbyte result);
[<System.CLSCompliant(false)>]
static member TryParse : string * sbyte -> bool
Public Shared Function TryParse (s As String, ByRef result As SByte) As Boolean

Parâmetros

s
String

Uma cadeia que contém um número a converter.

result
SByte

Quando este método retorna, contém o valor inteiro assinado de 8 bits que é equivalente ao número contido em s se a conversão foi bem-sucedida, ou zero se a conversão falhou. A conversão falha se o s parâmetro for null ou Empty, não estiver no formato correto, ou representar um número menor que SByte.MinValue ou maior que SByte.MaxValue. Este parâmetro é passado sem inicializar; qualquer valor originalmente fornecido result será sobrescrito.

Devoluções

true se s foi convertido com sucesso; caso contrário, false.

Atributos

Exemplos

O exemplo seguinte tenta converter as cadeias de um array em SByte valores chamando o TryParse(String, SByte) método.

string[] numericStrings = {"-3.6", "12.8", "+16.7", "    3   ", "(17)", 
                           "-17", "+12", "18-", "987", "1,024", "  127 "};
sbyte number;
foreach (string numericString in numericStrings)
{
   if (sbyte.TryParse(numericString, out number)) 
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number);
   else
      Console.WriteLine("Cannot convert '{0}' to an SByte.", numericString);
}
// The example displays the following output to the console:
//       Cannot convert '-3.6' to an SByte.
//       Cannot convert '12.8' to an SByte.
//       Cannot convert '+16.7' to an SByte.
//       Converted '    3   ' to 3.
//       Cannot convert '(17)' to an SByte.
//       Converted '-17' to -17.
//       Converted '+12' to 12.
//       Cannot convert '18-' to an SByte.
//       Cannot convert '987' to an SByte.
//       Cannot convert '1,024' to an SByte.
//       Converted '  127 ' to 127.
open System

let numericStrings = 
    [| "-3.6"; "12.8"; "+16.7"; "    3   "; "(17)" 
       "-17"; "+12"; "18-"; "987"; "1,024"; "  127 " |]

for numericString in numericStrings do
    match SByte.TryParse numericString with 
    | true, number ->
        printfn $"Converted '{numericString}' to {number}."
    | _ ->
        printfn $"Cannot convert '{numericString}' to an SByte."
// The example displays the following output to the console:
//       Cannot convert '-3.6' to an SByte.
//       Cannot convert '12.8' to an SByte.
//       Cannot convert '+16.7' to an SByte.
//       Converted '    3   ' to 3.
//       Cannot convert '(17)' to an SByte.
//       Converted '-17' to -17.
//       Converted '+12' to 12.
//       Cannot convert '18-' to an SByte.
//       Cannot convert '987' to an SByte.
//       Cannot convert '1,024' to an SByte.
//       Converted '  127 ' to 127.
Dim numericStrings() As String = {"-3.6", "12.8", "+16.7", "    3   ", _
                                  "(17)", "-17", "+12", "18-", "987", _
                                  "1,024", "  127 "}
Dim number As SByte
For Each numericString As String In numericStrings
   If SByte.TryParse(numericString, number) Then
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number)
   Else
      Console.WriteLine("Cannot convert '{0}' to an SByte.", numericString)
   End If      
Next
' The example displays the following output to the console:
'       Cannot convert '-3.6' to an SByte.
'       Cannot convert '12.8' to an SByte.
'       Cannot convert '+16.7' to an SByte.
'       Converted '    3   ' to 3.
'       Cannot convert '(17)' to an SByte.
'       Converted '-17' to -17.
'       Converted '+12' to 12.
'       Cannot convert '18-' to an SByte.
'       Cannot convert '987' to an SByte.
'       Cannot convert '1,024' to an SByte.
'       Converted '  127 ' to 127.

Observações

O SByte.TryParse(String, SByte) método é como o SByte.Parse(String) método, exceto que ele não lança uma exceção se a conversão falhar. Este método elimina a necessidade de usar o tratamento de exceções para testar se um FormatException se value é inválido e não pode ser analisado com sucesso.

O s parâmetro deve ser a representação da cadeia de um número decimal na seguinte forma:

[ws][sinal]dígitos[ws]

Os elementos entre parênteses retos ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Description
ws Espaço em branco opcional.
assinar Um sinal opcional. Caracteres de signo válidos são determinados pelas NumberFormatInfo.NegativeSign propriedades e NumberFormatInfo.PositiveSign da cultura atual.
dígitos Uma sequência de dígitos decimais entre 0 e 9.

Note

A cadeia especificada pelo value parâmetro não pode conter separadores de grupo ou separadores decimais, nem pode ter uma parte decimal.

O s parâmetro é interpretado usando o NumberStyles.Integer estilo. Para além dos dígitos decimais, apenas espaços à frente e à frente com sinal à frente são permitidos. Para definir explicitamente os elementos de estilo com a informação de formatação específica da cultura que pode estar presente em value, chame o TryParse(String, NumberStyles, IFormatProvider, SByte) método.

O s parâmetro é analisado usando a informação de formatação num NumberFormatInfo objeto para a cultura atual. Para obter mais informações, veja NumberFormatInfo.CurrentInfo.

Esta sobrecarga interpreta todos os dígitos do value parâmetro como dígitos decimais. Para analisar a representação da cadeia de um número hexadecimal, chame-se a TryParse(String, NumberStyles, IFormatProvider, SByte) sobrecarga em vez disso.

Ver também

Aplica-se a

TryParse(ReadOnlySpan<Char>, SByte)

Importante

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

Tenta converter a representação span de um número para o seu SByte equivalente e retorna um valor que indica se a conversão teve sucesso.

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] System::SByte % result);
[System.CLSCompliant(false)]
public static bool TryParse(ReadOnlySpan<char> s, out sbyte result);
[<System.CLSCompliant(false)>]
static member TryParse : ReadOnlySpan<char> * sbyte -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As SByte) As Boolean

Parâmetros

s
ReadOnlySpan<Char>

Um espaço que contém os caracteres que representam o número a converter.

result
SByte

Quando este método retorna, contém o valor inteiro assinado de 8 bits que é equivalente ao número contido em s se a conversão foi bem-sucedida, ou zero se a conversão falhou. A conversão falha se o s parâmetro for null ou Empty, não estiver no formato correto, ou representar um número menor que SByte.MinValue ou maior que SByte.MaxValue. Este parâmetro é passado sem inicializar; qualquer valor originalmente fornecido result será sobrescrito.

Devoluções

true se s foi convertido com sucesso; caso contrário, false.

Atributos

Aplica-se a

TryParse(String, NumberStyles, IFormatProvider, SByte)

Importante

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

Alternativa em conformidade com CLS
System.Int16.TryParse(String, Int16)

Tenta converter a representação em cadeia de um número num estilo especificado e formato específico de cultura para o seu SByte equivalente, e retorna um valor que indica se a conversão teve sucesso.

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::SByte % result);
[System.CLSCompliant(false)]
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out sbyte result);
[<System.CLSCompliant(false)>]
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * sbyte -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As SByte) As Boolean

Parâmetros

s
String

Uma cadeia que representa um número a converter.

style
NumberStyles

Uma combinação bit a bit de valores de enumeração que indica o formato permitido de s. Um valor típico a especificar é Integer.

provider
IFormatProvider

Um objeto que fornece informação de formatação específica de cultura sobre s.

result
SByte

Quando este método retorna, contém o valor inteiro assinado de 8 bits equivalente ao número contido em s, se a conversão foi bem-sucedida, ou zero se a conversão falhou. A conversão falha se o s parâmetro for null ou Empty, não estiver num formato compatível com style, ou representar um número inferior a SByte.MinValue ou maior que SByte.MaxValue. Este parâmetro é passado sem inicializar; qualquer valor originalmente fornecido result será sobrescrito.

Devoluções

true se s foi convertido com sucesso; caso contrário, false.

Atributos

Exceções

style não é um NumberStyles valor.

-ou-

style não é uma combinação de AllowHexSpecifier valores e HexNumber .

Exemplos

O exemplo seguinte chama o TryParse(String, NumberStyles, IFormatProvider, SByte) método com várias cadeias e NumberStyles valores diferentes.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;
      
      numericString = "106";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);
      
      numericString = "-106";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);
      
      numericString = "103.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);
      
      numericString = "103.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles); 
      
      numericString = "12E-01";
      CallTryParse(numericString, styles);
          
      numericString = "12E01";
      CallTryParse(numericString, styles); 
      
      numericString = "C8";
      CallTryParse(numericString, NumberStyles.HexNumber);
      
      numericString = "0x8C";
      CallTryParse(numericString, NumberStyles.HexNumber);
   }
   
   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      sbyte number;
      bool result = SByte.TryParse(stringToConvert, styles, 
                                   CultureInfo.InvariantCulture, out number);
      if (result)
         Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
      else
         Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
   }
}
// The example displays the following output:
//       Converted '106' to 106.
//       Attempted conversion of '-106' failed.
//       Converted '103.00' to 103.
//       Attempted conversion of '103.72' failed.
//       Converted '10E-01' to 1.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E01' to 120.
//       Converted 'C8' to -56.
//       Attempted conversion of '0x8C' failed.
open System
open System.Globalization

let callTryParse (stringToConvert: string) styles =
    match SByte.TryParse(stringToConvert, styles, CultureInfo.InvariantCulture) with
    | true, number ->
        printfn $"Converted '{stringToConvert}' to {number}."
    | _ ->
        printfn $"Attempted conversion of '{stringToConvert}' failed."

[<EntryPoint>]
let main _ =
    let numericString = "106"
    let styles = NumberStyles.Integer
    callTryParse numericString styles
    
    let numericString = "-106"
    let styles = NumberStyles.None
    callTryParse numericString styles
    
    let numericString = "103.00"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles
    
    let numericString = "103.72"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "10E-01"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
    callTryParse numericString styles 
    
    let numericString = "12E-01"
    callTryParse numericString styles
        
    let numericString = "12E01"
    callTryParse numericString styles 
    
    let numericString = "C8"
    callTryParse numericString NumberStyles.HexNumber
    
    let numericString = "0x8C"
    callTryParse numericString NumberStyles.HexNumber
    0

// The example displays the following output:
//       Converted '106' to 106.
//       Attempted conversion of '-106' failed.
//       Converted '103.00' to 103.
//       Attempted conversion of '103.72' failed.
//       Converted '10E-01' to 1.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E01' to 120.
//       Converted 'C8' to -56.
//       Attempted conversion of '0x8C' failed.
Imports System.Globalization

Module StringParsing
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles
      
      numericString = "106"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      numericString = "-106"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)
      
      numericString = "103.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)
      
      numericString = "103.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "10E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 
      
      numericString = "12E-01"
      CallTryParse(numericString, styles)
          
      numericString = "12E01"
      CallTryParse(numericString, styles) 
      
      numericString = "C8"
      CallTryParse(numericString, NumberStyles.HexNumber)
      
      numericString = "0x8C"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub
   
   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As SByte
      Dim result As Boolean = SByte.TryParse(stringToConvert, styles, _
                                             CultureInfo.InvariantCulture, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number)
      Else
         Console.WriteLine("Attempted conversion of '{0}' failed.", _
                           Convert.ToString(stringToConvert))
      End If                                                                           
   End Sub
End Module
' The example displays the following output to the console:
'       Converted '106' to 106.
'       Attempted conversion of '-106' failed.
'       Converted '103.00' to 103.
'       Attempted conversion of '103.72' failed.
'       Converted '10E-01' to 1.
'       Attempted conversion of '12E-01' failed.
'       Converted '12E01' to 120.
'       Converted 'C8' to -56.
'       Attempted conversion of '0x8C' failed.

Observações

O TryParse(String, NumberStyles, IFormatProvider, SByte) método é como o Parse(String, NumberStyles, IFormatProvider) método, exceto que ele não lança uma exceção se a conversão falhar. Este método elimina a necessidade de usar o tratamento de exceções para testar se um FormatException se value é inválido e não pode ser analisado com sucesso.

O style parâmetro define os elementos de estilo (como espaços em branco ou um sinal positivo ou negativo) que são permitidos no value parâmetro para que a operação de análise sintática tenha sucesso. Deve ser uma combinação de indicadores de bits da NumberStyles enumeração. Dependendo do valor de style, o value parâmetro pode incluir os seguintes elementos:

[ws][$][signo][dígitos,]dígitos[.fractional_digits][E[sign]exponential_digits][ws]

Se o style parâmetro incluir AllowHexSpecifier, o value parâmetro pode incluir os seguintes elementos:

[ws]hexdigits[ws]

Os elementos entre parênteses retos ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Description
ws Espaço em branco opcional. O espaço em branco pode aparecer no início de value if style inclui a NumberStyles.AllowLeadingWhite bandeira, ou no final de value if style inclui a NumberStyles.AllowTrailingWhite bandeira.
$ Um símbolo monetário específico de cada cultura. A sua posição na cadeia é definida pela CurrencyPositivePattern propriedade do NumberFormatInfo objeto devolvida pelo GetFormat método do provider parâmetro. O símbolo da moeda pode aparecer se valuestyle incluir a NumberStyles.AllowCurrencySymbol bandeira.
assinar Um sinal opcional. O sinal pode aparecer no início de value se incluir a NumberStyles.AllowLeadingSign bandeira, e pode aparecer no final de value se style incluir a NumberStyles.AllowTrailingSignstyle bandeira. Parênteses podem ser usados value para indicar um valor negativo se style incluir a NumberStyles.AllowParentheses bandeira.
dígitos Uma sequência de dígitos de 0 a 9.
, Um separador de grupo específico de cultura. O separador de grupo da cultura especificado por provider pode aparecer em value se style incluir a NumberStyles.AllowThousands bandeira.
. Um símbolo de ponto decimal específico para cada cultura. O símbolo da vírgula decimal da cultura especificado por provider pode aparecer em value se style incluir a NumberStyles.AllowDecimalPoint bandeira.
fractional_digits Uma ou mais ocorrências do dígito 0. Os dígitos fracionários só podem aparecer se valuestyle incluir a NumberStyles.AllowDecimalPoint bandeira.
E O carácter "e" ou "E", que indica que o valor é representado em notação exponencial (científica). O value parâmetro pode representar um número em notação exponencial se style incluir a NumberStyles.AllowExponent bandeira.
exponential_digits Uma sequência de dígitos de 0 a 9. O value parâmetro pode representar um número em notação exponencial se style incluir a NumberStyles.AllowExponent bandeira.
Hexdigits Uma sequência de dígitos hexadecimais de 0 a f, ou de 0 a F.

Note

Quaisquer caracteres NUL terminantes (U+0000) em s são ignorados pela operação de análise, independentemente do valor do style argumento.

Uma cadeia apenas com dígitos decimais (que corresponde à NumberStyles.None bandeira) faz sempre análise com sucesso. A maioria dos membros restantes NumberStyles controla elementos que podem estar presentes, mas que não são obrigados a estar presentes, nesta cadeia de entrada. A tabela seguinte indica como os membros individuais NumberStyles afetam os elementos que podem estar presentes em value.

Valores não compostos NumberStyles Elementos permitidos em valor além dos dígitos
None Apenas dígitos decimais.
AllowDecimalPoint A vírgula decimal (.) e fractional_digits elementos. No entanto, fractional_digits deve consistir apenas em um ou mais dígitos 0, ou o método devolve false.
AllowExponent O carácter "e" ou "E", que indica notação exponencial, juntamente com exponential_digits. Se value representa um número em notação exponencial, não pode ter um componente fracionário não nulo.
AllowLeadingWhite O elemento ws no início de value.
AllowTrailingWhite O elemento ws no final de value.
AllowLeadingSign O elemento de sinal antes dos dígitos.
AllowTrailingSign O elemento de sinal após os dígitos.
AllowParentheses O elemento do signo na forma de parênteses que envolvem o valor numérico.
AllowThousands O elemento separador de grupo (,).
AllowCurrencySymbol O elemento da moeda ($).
Currency Todos os elementos. No entanto, value não pode representar um número hexadecimal ou um número em notação exponencial.
Float O elemento ws no início ou fim de value, sinal no início de value, e o símbolo da vírgula decimal (.). O value parâmetro também pode usar notação exponencial.
Number Os elementos ws, signo, separador de grupo (,) e ponto decimal (.).
Any Todos os elementos. No entanto, value não pode representar um número hexadecimal.

Se a NumberStyles.AllowHexSpecifier bandeira for usada, value deve ser um valor hexadecimal. Os dígitos hexadecimais válidos são 0-9, a-f e A-F. As únicas outras bandeiras que podem estar presentes em style e NumberStyles.AllowLeadingWhiteNumberStyles.AllowTrailingWhite. (A NumberStyles enumeração tem um estilo composto, HexNumber, que inclui ambas as bandeiras de espaço em branco.)

Note

Se value for a representação em cadeia de um número hexadecimal, não pode ser precedida por qualquer decoração (como 0x ou &h) que a diferencie como número hexadecimal. Isto faz com que a conversão falhe.

O provider parâmetro é uma IFormatProvider implementação. O seu GetFormat método devolve um NumberFormatInfo objeto que fornece informação específica da cultura sobre o formato de value. O provider parâmetro pode ser qualquer um dos seguintes:

  • Um CultureInfo objeto que representa a cultura que fornece informação de formatação. O seu GetFormat método devolve o NumberFormatInfo objeto que fornece informação numérica de formatação para essa cultura.

  • Um NumberFormatInfo objeto que fornece informação numérica de formatação. (A sua implementação de GetFormat simplesmente devolve-se a si própria.)

  • Um objeto personalizado que implementa IFormatProvider. O seu GetFormat método instancia e devolve o NumberFormatInfo objeto que fornece a informação de formatação.

Se provider for null, o NumberFormatInfo objeto para a cultura atual é usado.

Ver também

Aplica-se a

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, SByte)

Importante

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

Tenta converter a representação span de um número num estilo especificado e formato específico de cultura para o seu SByte equivalente, e devolve um valor que indica se a conversão foi bem-sucedida.

public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::SByte % result);
[System.CLSCompliant(false)]
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out sbyte result);
[<System.CLSCompliant(false)>]
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * sbyte -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As SByte) As Boolean

Parâmetros

s
ReadOnlySpan<Char>

Um espaço que contém os caracteres que representam o número a converter.

style
NumberStyles

Uma combinação bit a bit de valores de enumeração que indica o formato permitido de s. Um valor típico a especificar é Integer.

provider
IFormatProvider

Um objeto que fornece informação de formatação específica de cultura sobre s.

result
SByte

Quando este método retorna, contém o valor inteiro assinado de 8 bits equivalente ao número contido em s, se a conversão foi bem-sucedida, ou zero se a conversão falhou. A conversão falha se o s parâmetro for null ou Empty, não estiver num formato compatível com style, ou representar um número inferior a SByte.MinValue ou maior que SByte.MaxValue. Este parâmetro é passado sem inicializar; qualquer valor originalmente fornecido result será sobrescrito.

Devoluções

true se s foi convertido com sucesso; caso contrário, false.

Atributos

Aplica-se a