Partilhar via


SByte.Parse Método

Definição

Converte a representação de cadeia de caracteres de um número em seu equivalente inteiro com sinal de 8 bits.

Sobrecargas

Parse(String, NumberStyles, IFormatProvider)

Converte a representação de cadeia de caracteres de um número que está em um formato específico de cultura e estilo especificado em seu equivalente assinado de 8 bits.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Converte a representação de intervalo de um número que está em um formato específico de cultura e estilo especificado em seu equivalente assinado de 8 bits.

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Analisa um intervalo de caracteres UTF-8 em um valor.

Parse(String, IFormatProvider)

Converte a representação de cadeia de caracteres de um número em um formato específico à cultura especificado em seu equivalente inteiro com sinal de 8 bits.

Parse(String)

Converte a representação de cadeia de caracteres de um número em seu equivalente inteiro com sinal de 8 bits.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Analisa um intervalo de caracteres em um valor.

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Analisa um intervalo de caracteres UTF-8 em um valor.

Parse(String, NumberStyles)

Converte a representação de cadeia de caracteres de um número em um estilo especificado em seu equivalente inteiro com sinal de 8 bits.

Parse(String, NumberStyles, IFormatProvider)

Origem:
SByte.cs
Origem:
SByte.cs
Origem:
SByte.cs

Importante

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

Alternativa em conformidade com CLS
System.Int16.Parse(String, NumberStyles, IFormatProvider)

Converte a representação de cadeia de caracteres de um número que está em um formato específico de cultura e estilo especificado em seu equivalente assinado de 8 bits.

public:
 static System::SByte Parse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider);
public:
 static System::SByte Parse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider) = System::Numerics::INumberBase<System::SByte>::Parse;
[System.CLSCompliant(false)]
public static sbyte Parse (string s, System.Globalization.NumberStyles style, IFormatProvider provider);
public static sbyte Parse (string s, System.Globalization.NumberStyles style, IFormatProvider? provider);
[System.CLSCompliant(false)]
public static sbyte Parse (string s, System.Globalization.NumberStyles style, IFormatProvider? provider);
[<System.CLSCompliant(false)>]
static member Parse : string * System.Globalization.NumberStyles * IFormatProvider -> sbyte
static member Parse : string * System.Globalization.NumberStyles * IFormatProvider -> sbyte
Public Shared Function Parse (s As String, style As NumberStyles, provider As IFormatProvider) As SByte

Parâmetros

s
String

Uma cadeia de caracteres que contém o número a ser convertido. A cadeia de caracteres é interpretada usando o estilo especificado por style.

style
NumberStyles

Uma combinação bit a bit dos valores de enumeração que indica os elementos de estilo que podem estar presentes em s. Um valor típico a ser especificado é Integer.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre s. Se provider for null, a cultura atual do thread será usada.

Retornos

Um valor de byte assinado de 8 bits equivalente ao número especificado no parâmetro s.

Implementações

Atributos

Exceções

style não é um valor NumberStyles.

-ou-

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

s não está em um formato compatível com style.

s representa um número menor que SByte.MinValue ou maior que SByte.MaxValue .

-ou-

s inclui dígitos fracionários diferentes de zero.

Exemplos

O exemplo a seguir ilustra o uso do método Parse(String, NumberStyles, IFormatProvider) para converter várias representações de cadeia de caracteres de números em valores inteiros assinados.

using System;
using System.Globalization;

public class SByteConversion
{
   NumberFormatInfo provider = NumberFormatInfo.CurrentInfo;

   public static void Main()
   {
      string stringValue;
      NumberStyles style;

      stringValue = "   123   ";
      style = NumberStyles.None;     
      CallParseOperation(stringValue, style);
      
      stringValue = "000,000,123";
      style = NumberStyles.Integer | NumberStyles.AllowThousands;
      CallParseOperation(stringValue, style);
      
      stringValue = "-100";
      style = NumberStyles.AllowLeadingSign;
      CallParseOperation(stringValue, style);
      
      stringValue = "100-";
      style = NumberStyles.AllowLeadingSign;
      CallParseOperation(stringValue, style);
      
      stringValue = "100-";
      style = NumberStyles.AllowTrailingSign;
      CallParseOperation(stringValue, style);
      
      stringValue = "$100";
      style = NumberStyles.AllowCurrencySymbol;
      CallParseOperation(stringValue, style);
      
      style = NumberStyles.Integer;
      CallParseOperation(stringValue, style);
      
      style = NumberStyles.AllowDecimalPoint;
      CallParseOperation("100.0", style);
      
      stringValue = "1e02";
      style = NumberStyles.AllowExponent;
      CallParseOperation(stringValue, style);
      
      stringValue = "(100)";
      style = NumberStyles.AllowParentheses;
      CallParseOperation(stringValue, style);
   }
   
   private static void CallParseOperation(string stringValue, 
                                          NumberStyles style)
   {                                          
      sbyte number;
      
      if (stringValue == null)
         Console.WriteLine("Cannot parse a null string...");
         
      try
      {
         number = sbyte.Parse(stringValue, style);
         Console.WriteLine("SByte.Parse('{0}', {1})) = {2}", 
                           stringValue, style, number);   
      }
      catch (FormatException)
      {
         Console.WriteLine("'{0}' and {1} throw a FormatException", 
                           stringValue, style);   
      }      
      catch (OverflowException)
      {
         Console.WriteLine("'{0}' is outside the range of a signed byte",
                           stringValue);
      }
   }
}
// The example displays the following information to the console:
//       '   123   ' and None throw a FormatException
//       SByte.Parse('000,000,123', Integer, AllowThousands)) = 123
//       SByte.Parse('-100', AllowLeadingSign)) = -100
//       '100-' and AllowLeadingSign throw a FormatException
//       SByte.Parse('100-', AllowTrailingSign)) = -100
//       SByte.Parse('$100', AllowCurrencySymbol)) = 100
//       '$100' and Integer throw a FormatException
//       SByte.Parse('100.0', AllowDecimalPoint)) = 100
//       SByte.Parse('1e02', AllowExponent)) = 100
//       SByte.Parse('(100)', AllowParentheses)) = -100
open System
open System.Globalization

let provider = NumberFormatInfo.CurrentInfo
   
let callParseOperation stringValue (style: NumberStyles) =
    if stringValue = null then
        printfn "Cannot parse a null string..."
    else
        try
            let number = SByte.Parse(stringValue, style)
            printfn $"SByte.Parse('{stringValue}', {style})) = {number}" 
        with
        | :? FormatException ->
            printfn $"'{stringValue}' and {style} throw a FormatException"
        | :? OverflowException ->
            printfn $"'{stringValue}' is outside the range of a signed byte"

[<EntryPoint>]
let main _ =
    let stringValue = "   123   "
    let style = NumberStyles.None     
    callParseOperation stringValue style
    
    let stringValue = "000,000,123"
    let style = NumberStyles.Integer ||| NumberStyles.AllowThousands
    callParseOperation stringValue style
    
    let stringValue = "-100"
    let style = NumberStyles.AllowLeadingSign
    callParseOperation stringValue style
    
    let stringValue = "100-"
    let style = NumberStyles.AllowLeadingSign
    callParseOperation stringValue style
    
    let stringValue = "100-"
    let style = NumberStyles.AllowTrailingSign
    callParseOperation stringValue style
    
    let stringValue = "$100"
    let style = NumberStyles.AllowCurrencySymbol
    callParseOperation stringValue style
    
    let style = NumberStyles.Integer
    callParseOperation stringValue style
    
    let style = NumberStyles.AllowDecimalPoint
    callParseOperation "100.0" style
    
    let stringValue = "1e02"
    let style = NumberStyles.AllowExponent
    callParseOperation stringValue style
    
    let stringValue = "(100)"
    let style = NumberStyles.AllowParentheses
    callParseOperation stringValue style
    0

// The example displays the following information to the console:
//       '   123   ' and None throw a FormatException
//       SByte.Parse('000,000,123', Integer, AllowThousands)) = 123
//       SByte.Parse('-100', AllowLeadingSign)) = -100
//       '100-' and AllowLeadingSign throw a FormatException
//       SByte.Parse('100-', AllowTrailingSign)) = -100
//       SByte.Parse('$100', AllowCurrencySymbol)) = 100
//       '$100' and Integer throw a FormatException
//       SByte.Parse('100.0', AllowDecimalPoint)) = 100
//       SByte.Parse('1e02', AllowExponent)) = 100
//       SByte.Parse('(100)', AllowParentheses)) = -100
Imports System.Globalization

Module modMain
   Public Sub Main()
      Dim byteString As String 
      
      byteString = " 123"
      ParseString(byteString, NumberStyles.None)
      ParseString(byteString, NumberStyles.Integer)
      
      byteString = "3A"
      ParseString(byteString, NumberStyles.AllowHexSpecifier) 
      
      byteString = "21"
      ParseString(byteString, NumberStyles.Integer)
      ParseString(byteString, NumberStyles.AllowHexSpecifier)
      
      byteString = "-22"
      ParseString(byteString, NumberStyles.Integer)
      ParseString(byteString, NumberStyles.AllowParentheses)
      
      byteString = "(45)"
      ParseString(byteString, NumberStyles.AllowParentheses)
     
      byteString = "000,000,056"
      ParseString(byteString, NumberStyles.Integer)
      ParseString(byteString, NumberStyles.Integer Or NumberStyles.AllowThousands)
   End Sub
   
   Private Sub ParseString(value As String, style As NumberStyles)
      Dim number As SByte
      
      If value Is Nothing Then Console.WriteLine("Cannot parse a null string...") 
      
      Try
         number = SByte.Parse(value, style, NumberFormatInfo.CurrentInfo)
         Console.WriteLine("SByte.Parse('{0}', {1}) = {2}", value, style, number)   
      Catch e As FormatException
         Console.WriteLine("'{0}' and {1} throw a FormatException", value, style)   
      Catch e As OverflowException
         Console.WriteLine("'{0}' is outside the range of a signed byte",
                           value)
      End Try     
   End Sub
End Module
' The example displays the following information to the console:
'       ' 123' and None throw a FormatException
'       SByte.Parse(" 123", Integer)) = 123
'       SByte.Parse("3A", AllowHexSpecifier)) = 58
'       SByte.Parse("21", Integer)) = 21
'       SByte.Parse("21", AllowHexSpecifier)) = 33
'       SByte.Parse("-22", Integer)) = -22
'       '-22' and AllowParentheses throw a FormatException
'       SByte.Parse("(45)", AllowParentheses)) = -45
'       '000,000,056' and Integer throw a FormatException
'       SByte.Parse("000,000,056", Integer, AllowThousands)) = 56

Comentários

O parâmetro style define os elementos de estilo (como espaço em branco ou o símbolo de sinal positivo ou negativo) que são permitidos no parâmetro s para que a operação de análise tenha êxito. Deve ser uma combinação de sinalizadores de bits da enumeração NumberStyles.

Dependendo do valor de style, o parâmetro s pode incluir os seguintes elementos:

[ws] [$] [sign]digits[.fractional_digits][E[sign]exponential_digits][ws]

Se style incluir AllowHexSpecifier, o parâmetro s poderá incluir os seguintes elementos:

[ws]hexdigits[ws]

Elementos em colchetes ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Descrição
ws Espaço em branco opcional. O espaço em branco poderá aparecer no início do s se style incluir o sinalizador NumberStyles.AllowLeadingWhite e ele poderá aparecer no final do s se style incluir o sinalizador NumberStyles.AllowTrailingWhite.
$ Um símbolo de moeda específico à cultura. Sua posição na cadeia de caracteres é definida pela propriedade NumberFormatInfo.CurrencyPositivePattern da cultura atual. O símbolo de moeda da cultura atual pode aparecer em s se style incluir o sinalizador NumberStyles.AllowCurrencySymbol.
assinar Um sinal opcional. O sinal poderá aparecer no início do s se style incluir o sinalizador NumberStyles.AllowLeadingSign e ele poderá aparecer no final do s se style incluir o sinalizador de NumberStyles.AllowTrailingSign. Parênteses podem ser usados em s para indicar um valor negativo se style incluir o sinalizador NumberStyles.AllowParentheses.
dígitos Uma sequência de dígitos de 0 a 9.
. Um símbolo de ponto decimal específico da cultura. O símbolo de ponto decimal da cultura atual pode aparecer em s se style incluir o sinalizador NumberStyles.AllowDecimalPoint.
fractional_digits Uma ou mais ocorrências do dígito 0-9 se style incluir o sinalizador NumberStyles.AllowExponent ou uma ou mais ocorrências do dígito 0 se não o fizer. Dígitos fracionários só poderão aparecer em s se style incluir o sinalizador NumberStyles.AllowDecimalPoint.
E O caractere "e" ou "E", que indica que o valor é representado na notação exponencial (científica). O parâmetro s pode representar um número na notação exponencial se style incluir o sinalizador NumberStyles.AllowExponent.
exponential_digits Uma sequência de dígitos de 0 a 9. O parâmetro s pode representar um número na notação exponencial se style incluir o sinalizador NumberStyles.AllowExponent.
hexdigits Uma sequência de dígitos hexadecimal de 0 a f ou 0 a F.

Nota

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

Uma cadeia de caracteres somente com dígitos decimais (que corresponde ao estilo NumberStyles.None) sempre é analisada com êxito. A maioria dos elementos de controle de membros NumberStyles restantes que podem estar presentes, mas não precisam estar presentes, nesta cadeia de caracteres de entrada. A tabela a seguir indica como membros NumberStyles individuais afetam os elementos que podem estar presentes no s.

Valores de NumberStyles não compostos Elementos permitidos em s além de dígitos
NumberStyles.None Somente dígitos decimais.
NumberStyles.AllowDecimalPoint O ponto decimal (.) e fractional_digits elementos. No entanto, se o estilo não incluir o sinalizador NumberStyles.AllowExponent, fractional_digits deverá consistir em apenas um ou mais 0 dígitos; caso contrário, um OverflowException é gerado.
NumberStyles.AllowExponent O caractere "e" ou "E", que indica notação exponencial, juntamente com exponential_digits.
NumberStyles.AllowLeadingWhite O elemento ws no início de s.
NumberStyles.AllowTrailingWhite O elemento ws no final de s.
NumberStyles.AllowLeadingSign Um sinal positivo antes de dígitos.
NumberStyles.AllowTrailingSign Um sinal positivo após dígitos.
NumberStyles.AllowParentheses Parênteses antes e depois dígitos para indicar um valor negativo.
NumberStyles.AllowThousands O elemento separador de grupo (,). Embora o separador de grupo possa aparecer em s, ele deve ser precedido por apenas um ou mais 0 dígitos.
NumberStyles.AllowCurrencySymbol O elemento currency ($).

Se o sinalizador NumberStyles.AllowHexSpecifier for usado, s deverá ser um valor hexadecimal. Os dígitos hexadecimal válidos são 0-9, a-f e A-F. Os únicos outros sinalizadores que podem ser combinados com ele são NumberStyles.AllowLeadingWhite e NumberStyles.AllowTrailingWhite. (A enumeração NumberStyles inclui um estilo de número composto, NumberStyles.HexNumber, que inclui sinalizadores de espaço em branco.)

Nota

Se o parâmetro s for a representação de cadeia de caracteres de um número hexadecimal, ele não poderá ser precedido por qualquer decoração (como 0x ou &h) que a diferencie como um número hexadecimal. Isso faz com que a operação de análise gere uma exceção.

Se s representar um número hexadecimal, o método Parse(String, NumberStyles) interpretará o bit de alta ordem do byte como um bit de sinal.

O parâmetro provider é uma implementação IFormatProvider cujo método GetFormat retorna um objeto NumberFormatInfo que fornece informações específicas da cultura sobre o formato de s. Há três maneiras de usar o parâmetro provider para fornecer informações de formatação personalizadas para a operação de análise:

  • Você pode passar o objeto NumberFormatInfo real que fornece informações de formatação. (Sua implementação de GetFormat simplesmente retorna a si mesma.)

  • Você pode passar um objeto CultureInfo que especifica a cultura cuja formatação deve ser usada. Sua propriedade NumberFormat fornece informações de formatação.

  • Você pode passar uma implementação de IFormatProvider personalizada. Seu método GetFormat deve criar uma instância e retornar o objeto NumberFormatInfo que fornece informações de formatação.

Se provider for null, o objeto NumberFormatInfo da cultura atual será usado.

Aplica-se a

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Origem:
SByte.cs
Origem:
SByte.cs
Origem:
SByte.cs

Importante

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

Converte a representação de intervalo de um número que está em um formato específico de cultura e estilo especificado em seu equivalente assinado de 8 bits.

public static sbyte Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
[System.CLSCompliant(false)]
public static sbyte Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider provider = default);
[System.CLSCompliant(false)]
public static sbyte Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
static member Parse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider -> sbyte
[<System.CLSCompliant(false)>]
static member Parse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider -> sbyte
Public Shared Function Parse (s As ReadOnlySpan(Of Char), Optional style As NumberStyles = System.Globalization.NumberStyles.Integer, Optional provider As IFormatProvider = Nothing) As SByte

Parâmetros

s
ReadOnlySpan<Char>

Um intervalo que contém os caracteres que representam o número a ser convertido. O intervalo é interpretado usando o estilo especificado por style.

style
NumberStyles

Uma combinação bit a bit dos valores de enumeração que indica os elementos de estilo que podem estar presentes em s. Um valor típico a ser especificado é Integer.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre s. Se provider for null, a cultura atual do thread será usada.

Retornos

Um valor de byte assinado de 8 bits equivalente ao número especificado no parâmetro s.

Implementações

Atributos

Aplica-se a

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Origem:
SByte.cs
Origem:
SByte.cs

Analisa um intervalo de caracteres UTF-8 em um valor.

public static sbyte Parse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
static member Parse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider -> sbyte
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), Optional style As NumberStyles = System.Globalization.NumberStyles.Integer, Optional provider As IFormatProvider = Nothing) As SByte

Parâmetros

utf8Text
ReadOnlySpan<Byte>

O intervalo de caracteres UTF-8 a serem analisados.

style
NumberStyles

Uma combinação bit a bit de estilos numéricos que podem estar presentes em utf8Text.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre utf8Text.

Retornos

O resultado da análise de utf8Text.

Implementações

Aplica-se a

Parse(String, IFormatProvider)

Origem:
SByte.cs
Origem:
SByte.cs
Origem:
SByte.cs

Importante

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

Alternativa em conformidade com CLS
System.Int16.Parse(String)

Converte a representação de cadeia de caracteres de um número em um formato específico à cultura especificado em seu equivalente inteiro com sinal de 8 bits.

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

Parâmetros

s
String

Uma cadeia de caracteres que representa um número a ser convertido. A cadeia de caracteres é interpretada usando o estilo Integer.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre s. Se provider for null, a cultura atual do thread será usada.

Retornos

Um inteiro com sinal de 8 bits equivalente ao número especificado em s.

Implementações

Atributos

Exceções

s não está no formato correto.

s representa um número menor que SByte.MinValue ou maior que SByte.MaxValue .

Exemplos

O exemplo a seguir define um objeto NumberFormatInfo personalizado que define o bloco (~) como o sinal negativo. Em seguida, analisa várias cadeias de caracteres numéricas usando esse objeto NumberFormatInfo personalizado, bem como um objeto CultureInfo que representa a cultura invariável.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      NumberFormatInfo nf = new NumberFormatInfo();
      nf.NegativeSign = "~"; 
      
      string[] values = { "-103", "+12", "~16", "  1", "~255" };
      IFormatProvider[] providers = { nf, CultureInfo.InvariantCulture };
      
      foreach (IFormatProvider provider in providers)
      {
         Console.WriteLine("Conversions using {0}:", ((object) provider).GetType().Name);
         foreach (string value in values)
         {
            try {
               Console.WriteLine("   Converted '{0}' to {1}.", 
                                 value, SByte.Parse(value, provider));
            }                     
            catch (FormatException) {
               Console.WriteLine("   Unable to parse '{0}'.", value);   
            }
            catch (OverflowException) {
               Console.WriteLine("   '{0}' is out of range of the SByte type.", value);         
            }
         }
      }      
   }
}
// The example displays the following output:
//       Conversions using NumberFormatInfo:
//          Unable to parse '-103'.
//          Converted '+12' to 12.
//          Converted '~16' to -16.
//          Converted '  1' to 1.
//          '~255' is out of range of the SByte type.
//       Conversions using CultureInfo:
//          Converted '-103' to -103.
//          Converted '+12' to 12.
//          Unable to parse '~16'.
//          Converted '  1' to 1.
//          Unable to parse '~255'.
open System
open System.Globalization

let nf = NumberFormatInfo()
nf.NegativeSign <- "~" 

let values = [| "-103"; "+12"; "~16"; "  1"; "~255" |]
let providers: IFormatProvider[] = [| nf; CultureInfo.InvariantCulture |]

for provider in providers do
    printfn $"Conversions using {(box provider).GetType().Name}:"
    for value in values do
        try
            printfn $"   Converted '{value}' to {SByte.Parse(value, provider)}."
        with
        | :? FormatException ->
            printfn $"   Unable to parse '{value}'."
        | :? OverflowException ->
            printfn $"   '{value}' is out of range of the SByte type."

// The example displays the following output:
//       Conversions using NumberFormatInfo:
//          Unable to parse '-103'.
//          Converted '+12' to 12.
//          Converted '~16' to -16.
//          Converted '  1' to 1.
//          '~255' is out of range of the SByte type.
//       Conversions using CultureInfo:
//          Converted '-103' to -103.
//          Converted '+12' to 12.
//          Unable to parse '~16'.
//          Converted '  1' to 1.
//          Unable to parse '~255'.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim nf As New NumberFormatInfo()
      nf.NegativeSign = "~" 
      
      Dim values() As String = { "-103", "+12", "~16", "  1", "~255" }
      Dim providers() As IFormatProvider = { nf, CultureInfo.InvariantCulture }
      
      For Each provider As IFormatProvider In providers
         Console.WriteLine("Conversions using {0}:", CObj(provider).GetType().Name)
         For Each value As String In values
            Try
               Console.WriteLine("   Converted '{0}' to {1}.", _
                                 value, SByte.Parse(value, provider))
            Catch e As FormatException
               Console.WriteLine("   Unable to parse '{0}'.", value)   
            Catch e As OverflowException
               Console.WriteLine("   '{0}' is out of range of the SByte type.", value)         
            End Try
         Next
      Next      
   End Sub
End Module
' The example displays '
'       Conversions using NumberFormatInfo:
'          Unable to parse '-103'.
'          Converted '+12' to 12.
'          Converted '~16' to -16.
'          Converted '  1' to 1.
'          '~255' is out of range of the SByte type.
'       Conversions using CultureInfo:
'          Converted '-103' to -103.
'          Converted '+12' to 12.
'          Unable to parse '~16'.
'          Converted '  1' to 1.
'          Unable to parse '~255'.

Comentários

O parâmetro s contém um número do formulário:

[ws] [assinar]dígitos[ws]

Elementos em colchetes ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Descrição
ws Espaço em branco opcional.
assinar Um sinal opcional.
dígitos Uma sequência de dígitos variando de 0 a 9.

O parâmetro s é interpretado usando o estilo Integer. Além dos dígitos decimais do valor de byte, somente espaços à esquerda e à direita com um sinal à esquerda são permitidos. Para definir explicitamente os elementos de estilo com as informações de formatação específicas da cultura que podem estar presentes em s, use o método Parse(String, NumberStyles, IFormatProvider).

O parâmetro provider é uma implementação IFormatProvider cujo método GetFormat retorna um objeto NumberFormatInfo que fornece informações específicas da cultura sobre o formato de s. Há três maneiras de usar o parâmetro provider para fornecer informações de formatação personalizadas para a operação de análise:

  • Você pode passar o objeto NumberFormatInfo real que fornece informações de formatação. (Sua implementação de GetFormat simplesmente retorna a si mesma.)

  • Você pode passar um objeto CultureInfo que especifica a cultura cuja formatação deve ser usada. Sua propriedade NumberFormat fornece informações de formatação.

  • Você pode passar uma implementação de IFormatProvider personalizada. Seu método GetFormat deve criar uma instância e retornar o objeto NumberFormatInfo que fornece informações de formatação.

Se provider for null, o objeto NumberFormatInfo da cultura atual será usado.

Confira também

Aplica-se a

Parse(String)

Origem:
SByte.cs
Origem:
SByte.cs
Origem:
SByte.cs

Importante

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

Alternativa em conformidade com CLS
System.Int16.Parse(String)

Converte a representação de cadeia de caracteres de um número em seu equivalente inteiro com sinal de 8 bits.

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

Parâmetros

s
String

Uma cadeia de caracteres que representa um número a ser convertido. A cadeia de caracteres é interpretada usando o estilo Integer.

Retornos

Um inteiro com sinal de 8 bits equivalente ao número contido no parâmetro s.

Atributos

Exceções

s é null.

s não consiste em um sinal opcional seguido por uma sequência de dígitos (zero a nove).

s representa um número menor que SByte.MinValue ou maior que SByte.MaxValue .

Exemplos

O exemplo a seguir demonstra como converter um valor de cadeia de caracteres em um valor de byte assinado usando o método Parse. O valor de byte assinado resultante é exibido no console.

// Define an array of numeric strings.
string[] values = { "-16", "  -3", "+ 12", " +12 ", "  12  ",
                    "+120", "(103)", "192", "-160" };
                           
// Parse each string and display the result.
foreach (string value in values)
{
   try {
      Console.WriteLine("Converted '{0}' to the SByte value {1}.",
                        value, SByte.Parse(value));
   }
   catch (FormatException) {
      Console.WriteLine("'{0}' cannot be parsed successfully by SByte type.",
                        value);
   }                              
   catch (OverflowException) {
      Console.WriteLine("'{0}' is out of range of the SByte type.",
                        value);
   }                                                                        
}
// The example displays the following output:
//       Converted '-16' to the SByte value -16.
//       Converted '  -3' to the SByte value -3.
//       '+ 12' cannot be parsed successfully by SByte type.
//       Converted ' +12 ' to the SByte value 12.
//       Converted '  12  ' to the SByte value 12.
//       Converted '+120' to the SByte value 120.
//       '(103)' cannot be parsed successfully by SByte type.
//       '192' is out of range of the SByte type.
//       '-160' is out of range of the SByte type.
open System

// Define an array of numeric strings.
let values = 
    [| "-16"; "  -3"; "+ 12"; " +12 "; "  12  "
       "+120"; "(103)"; "192"; "-160" |]
                            
// Parse each string and display the result.
for value in values do
    try
        printfn $"Converted '{value}' to the SByte value {SByte.Parse value}."
    with
    | :? FormatException ->
        printfn $"'{value}' cannot be parsed successfully by SByte type."
    | :? OverflowException ->
        printfn $"'{value}' is out of range of the SByte type."
        
// The example displays the following output:
//       Converted '-16' to the SByte value -16.
//       Converted '  -3' to the SByte value -3.
//       '+ 12' cannot be parsed successfully by SByte type.
//       Converted ' +12 ' to the SByte value 12.
//       Converted '  12  ' to the SByte value 12.
//       Converted '+120' to the SByte value 120.
//       '(103)' cannot be parsed successfully by SByte type.
//       '192' is out of range of the SByte type.
//       '-160' is out of range of the SByte type.
' Define an array of numeric strings.
Dim values() As String = { "-16", "  -3", "+ 12", " +12 ", "  12  ", _
                           "+120", "(103)", "192", "-160" }
                           
' Parse each string and display the result.
For Each value As String In values
   Try
      Console.WriteLine("Converted '{0}' to the SByte value {1}.", _
                        value, SByte.Parse(value))
   Catch e As FormatException
      Console.WriteLine("'{0}' cannot be parsed successfully by SByte type.", _
                        value)
   Catch e As OverflowException
      Console.WriteLine("'{0}' is out of range of the SByte type.", _
                        value)
   End Try                                                                        
Next        
' The example displays the following output:
'       Converted '-16' to the SByte value -16.
'       Converted '  -3' to the SByte value -3.
'       '+ 12' cannot be parsed successfully by SByte type.
'       Converted ' +12 ' to the SByte value 12.
'       Converted '  12  ' to the SByte value 12.
'       Converted '+120' to the SByte value 120.
'       '(103)' cannot be parsed successfully by SByte type.
'       '192' is out of range of the SByte type.
'       '-160' is out of range of the SByte type.

Comentários

O parâmetro s contém um número do formulário:

[ws] [assinar]dígitos[ws]

Elementos em colchetes ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Descrição
ws Espaço em branco opcional.
assinar Um sinal opcional.
dígitos Uma sequência de dígitos variando de 0 a 9.

O parâmetro s é interpretado usando o estilo NumberStyles.Integer. Além dos dígitos decimais do valor de byte, somente espaços à esquerda e à direita com um sinal positivo ou negativo à esquerda são permitidos. Para definir explicitamente os elementos de estilo que podem estar presentes em s, use a Parse(String, NumberStyles) ou o método Parse(String, NumberStyles, IFormatProvider).

O parâmetro s é analisado usando as informações de formatação em um NumberFormatInfo inicializado para a cultura atual do sistema. Para obter mais informações, consulte NumberFormatInfo.CurrentInfo. Para analisar uma cadeia de caracteres usando as informações de formatação de alguma outra cultura, use o método Parse(String, NumberStyles, IFormatProvider).

Confira também

Aplica-se a

Parse(ReadOnlySpan<Char>, IFormatProvider)

Origem:
SByte.cs
Origem:
SByte.cs
Origem:
SByte.cs

Analisa um intervalo de caracteres em um valor.

public:
 static System::SByte Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<System::SByte>::Parse;
public static sbyte Parse (ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> sbyte
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As SByte

Parâmetros

s
ReadOnlySpan<Char>

O intervalo de caracteres a serem analisados.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre s.

Retornos

O resultado da análise de s.

Implementações

Aplica-se a

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Origem:
SByte.cs
Origem:
SByte.cs

Analisa um intervalo de caracteres UTF-8 em um valor.

public:
 static System::SByte Parse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider) = IUtf8SpanParsable<System::SByte>::Parse;
public static sbyte Parse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider);
static member Parse : ReadOnlySpan<byte> * IFormatProvider -> sbyte
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider) As SByte

Parâmetros

utf8Text
ReadOnlySpan<Byte>

O intervalo de caracteres UTF-8 a serem analisados.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre utf8Text.

Retornos

O resultado da análise de utf8Text.

Implementações

Aplica-se a

Parse(String, NumberStyles)

Origem:
SByte.cs
Origem:
SByte.cs
Origem:
SByte.cs

Importante

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

Alternativa em conformidade com CLS
System.Int16.Parse(String)

Converte a representação de cadeia de caracteres de um número em um estilo especificado em seu equivalente inteiro com sinal de 8 bits.

public:
 static System::SByte Parse(System::String ^ s, System::Globalization::NumberStyles style);
[System.CLSCompliant(false)]
public static sbyte Parse (string s, System.Globalization.NumberStyles style);
public static sbyte Parse (string s, System.Globalization.NumberStyles style);
[<System.CLSCompliant(false)>]
static member Parse : string * System.Globalization.NumberStyles -> sbyte
static member Parse : string * System.Globalization.NumberStyles -> sbyte
Public Shared Function Parse (s As String, style As NumberStyles) As SByte

Parâmetros

s
String

Uma cadeia de caracteres que contém um número a ser convertido. A cadeia de caracteres é interpretada usando o estilo especificado por style.

style
NumberStyles

Uma combinação bit a bit dos valores de enumeração que indica os elementos de estilo que podem estar presentes em s. Um valor típico a ser especificado é Integer.

Retornos

Um inteiro com sinal de 8 bits equivalente ao número especificado em s.

Atributos

Exceções

s não está em um formato compatível com style.

s representa um número menor que SByte.MinValue ou maior que SByte.MaxValue .

-ou-

s inclui dígitos fracionários diferentes de zero.

style não é um valor NumberStyles.

-ou-

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

Exemplos

O exemplo a seguir analisa representações de cadeia de caracteres de valores SByte com o método Parse(String, NumberStyles). A cultura atual do exemplo é en-US.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      NumberStyles style;
      sbyte number;

      // Parse value with no styles allowed.
      string[] values1 = { " 121 ", "121", "-121" };
      style = NumberStyles.None;
      Console.WriteLine("Styles: {0}", style.ToString());
      foreach (string value in values1)
      {
         try {
            number = SByte.Parse(value, style);
            Console.WriteLine("   Converted '{0}' to {1}.", value, number);
         }   
         catch (FormatException) {
            Console.WriteLine("   Unable to parse '{0}'.", value);
         }
      }
      Console.WriteLine();
            
      // Parse value with trailing sign.
      style = NumberStyles.Integer | NumberStyles.AllowTrailingSign;
      string[] values2 = { " 103+", " 103 +", "+103", "(103)", "   +103  " };
      Console.WriteLine("Styles: {0}", style.ToString());
      foreach (string value in values2)
      {
         try {
            number = SByte.Parse(value, style);
            Console.WriteLine("   Converted '{0}' to {1}.", value, number);
         }   
         catch (FormatException) {
            Console.WriteLine("   Unable to parse '{0}'.", value);
         }      
         catch (OverflowException) {
            Console.WriteLine("   '{0}' is out of range of the SByte type.", value);         
         }
      }      
      Console.WriteLine();
   }
}
// The example displays the following output:
//       Styles: None
//          Unable to parse ' 121 '.
//          Converted '121' to 121.
//          Unable to parse '-121'.
//       
//       Styles: Integer, AllowTrailingSign
//          Converted ' 103+' to 103.
//          Converted ' 103 +' to 103.
//          Converted '+103' to 103.
//          Unable to parse '(103)'.
//          Converted '   +103  ' to 103.
open System
open System.Globalization

// Parse value with no styles allowed.
let values1 = [| " 121 "; "121"; "-121" |]
let style = NumberStyles.None
printfn $"Styles: {style}"
for value in values1 do
    try
        let number = SByte.Parse(value, style)
        printfn $"   Converted '{value}' to {number}."
    with :? FormatException ->
        printfn $"   Unable to parse '{value}'."
printfn ""
            
// Parse value with trailing sign.
let style2 = NumberStyles.Integer ||| NumberStyles.AllowTrailingSign
let values2 = [| " 103+"; " 103 +"; "+103"; "(103)"; "   +103  " |]
printfn $"Styles: {style2}"
for value in values2 do
    try
        let number = SByte.Parse(value, style2)
        printfn $"   Converted '{value}' to {number}."
    with 
    | :? FormatException ->
        printfn $"   Unable to parse '{value}'."
    | :? OverflowException ->
        printfn $"   '{value}' is out of range of the SByte type."         
printfn ""
// The example displays the following output:
//       Styles: None
//          Unable to parse ' 121 '.
//          Converted '121' to 121.
//          Unable to parse '-121'.
//       
//       Styles: Integer, AllowTrailingSign
//          Converted ' 103+' to 103.
//          Converted ' 103 +' to 103.
//          Converted '+103' to 103.
//          Unable to parse '(103)'.
//          Converted '   +103  ' to 103.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim style As NumberStyles
      Dim number As SByte

      ' Parse value with no styles allowed.
      Dim values1() As String = { " 121 ", "121", "-121" }
      style = NumberStyles.None
      Console.WriteLine("Styles: {0}", style.ToString())
      For Each value As String In values1
         Try
            number = SByte.Parse(value, style)
            Console.WriteLine("   Converted '{0}' to {1}.", value, number)
         Catch e As FormatException
            Console.WriteLine("   Unable to parse '{0}'.", value)   
         End Try
      Next
      Console.WriteLine()
            
      ' Parse value with trailing sign.
      style = NumberStyles.Integer Or NumberStyles.AllowTrailingSign
      Dim values2() As String = { " 103+", " 103 +", "+103", "(103)", "   +103  " }
      Console.WriteLine("Styles: {0}", style.ToString())
      For Each value As String In values2
         Try
            number = SByte.Parse(value, style)
            Console.WriteLine("   Converted '{0}' to {1}.", value, number)
         Catch e As FormatException
            Console.WriteLine("   Unable to parse '{0}'.", value)   
         Catch e As OverflowException
            Console.WriteLine("   '{0}' is out of range of the SByte type.", value)         
         End Try
      Next      
      Console.WriteLine()
   End Sub
End Module
' The example displays the following output:
'       Styles: None
'          Unable to parse ' 121 '.
'          Converted '121' to 121.
'          Unable to parse '-121'.
'       
'       Styles: Integer, AllowTrailingSign
'          Converted ' 103+' to 103.
'          Converted ' 103 +' to 103.
'          Converted '+103' to 103.
'          Unable to parse '(103)'.
'          Converted '   +103  ' to 103.

Comentários

O parâmetro style define os elementos de estilo (como espaço em branco ou o símbolo de sinal positivo ou negativo) que são permitidos no parâmetro s para que a operação de análise tenha êxito. Deve ser uma combinação de sinalizadores de bits da enumeração NumberStyles.

Dependendo do valor de style, o parâmetro s pode incluir os seguintes elementos:

[ws] [$] [sign]digits[.fractional_digits][E[sign]exponential_digits][ws]

Se style incluir NumberStyles.AllowHexSpecifier, o parâmetro s poderá conter os seguintes elementos:

[ws]hexdigits[ws]

Elementos em colchetes ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Descrição
ws Espaço em branco opcional. O espaço em branco poderá aparecer no início de s se style incluir o sinalizador NumberStyles.AllowLeadingWhite e ele poderá aparecer no final do s se o estilo incluir o sinalizador NumberStyles.AllowTrailingWhite.
$ Um símbolo de moeda específico à cultura. Sua posição na cadeia de caracteres é definida pela propriedade NumberFormatInfo.CurrencyPositivePattern da cultura atual. O símbolo de moeda da cultura atual pode aparecer em s se style incluir o sinalizador NumberStyles.AllowCurrencySymbol.
assinar Um sinal opcional. O sinal poderá aparecer no início do s se style incluir o sinalizador de NumberStyles.AllowLeadingSign e ele poderá aparecer no final do s se style incluir o sinalizador NumberStyles.AllowTrailingSign. Parênteses podem ser usados em s para indicar um valor negativo se style incluir o sinalizador NumberStyles.AllowParentheses.
dígitos Uma sequência de dígitos de 0 a 9.
. Um símbolo de ponto decimal específico da cultura. O símbolo de ponto decimal da cultura atual pode aparecer em s se style incluir o sinalizador NumberStyles.AllowDecimalPoint.
fractional_digits Uma ou mais ocorrências do dígito 0-9 se style incluir o sinalizador NumberStyles.AllowExponent ou uma ou mais ocorrências do dígito 0 se não o fizer. Dígitos fracionários só poderão aparecer em s se style incluir o sinalizador NumberStyles.AllowDecimalPoint.
E O caractere "e" ou "E", que indica que o valor é representado na notação exponencial (científica). O parâmetro s pode representar um número na notação exponencial se style incluir o sinalizador NumberStyles.AllowExponent.
exponential_digits Uma ou mais ocorrências do dígito 0-9. O parâmetro s pode representar um número na notação exponencial se style incluir o sinalizador NumberStyles.AllowExponent.
hexdigits Uma sequência de dígitos hexadecimal de 0 a f ou 0 a F.

Nota

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

Uma cadeia de caracteres somente com dígitos decimais (que corresponde ao estilo NumberStyles.None) sempre é analisada com êxito. A maioria dos elementos de controle de membros NumberStyles restantes que podem estar presentes, mas não precisam estar presentes, na cadeia de caracteres de entrada. A tabela a seguir indica como membros NumberStyles individuais afetam os elementos que podem estar presentes no s.

Valores NumberStyles não compostos Elementos permitidos no de além de dígitos
NumberStyles.None Somente dígitos decimais.
NumberStyles.AllowDecimalPoint O ponto decimal (.) e fractional_digits elementos. No entanto, se style não incluir o sinalizador NumberStyles.AllowExponent, fractional_digits deverá consistir em apenas um ou mais 0 dígitos; caso contrário, um OverflowException é gerado.
NumberStyles.AllowExponent O caractere "e" ou "E", que indica notação exponencial, juntamente com exponential_digits.
NumberStyles.AllowLeadingWhite O elemento ws no início de s.
NumberStyles.AllowTrailingWhite O elemento ws no final de s.
NumberStyles.AllowLeadingSign Um sinal positivo antes de dígitos.
NumberStyles.AllowTrailingSign Um sinal positivo após dígitos.
NumberStyles.AllowParentheses O sinal elemento na forma de parênteses que incluem o valor numérico.
NumberStyles.AllowThousands O elemento separador de grupo (,). Embora o separador de grupo possa aparecer em s, ele deve ser precedido por apenas um ou mais 0 dígitos.
NumberStyles.AllowCurrencySymbol O elemento currency ($).

Se o sinalizador NumberStyles.AllowHexSpecifier for usado, s deverá ser um valor hexadecimal. Os dígitos hexadecimal válidos são 0-9, a-f e A-F. Não há suporte para um prefixo como "0x" e faz com que a operação de análise falhe. Os únicos outros sinalizadores que podem ser combinados incluídos em style são NumberStyles.AllowLeadingWhite e NumberStyles.AllowTrailingWhite. (A enumeração NumberStyles inclui um estilo de número composto, NumberStyles.HexNumber, que inclui sinalizadores de espaço em branco.)

Nota

Se o parâmetro s for a representação de cadeia de caracteres de um número hexadecimal, ele não poderá ser precedido por qualquer decoração (como 0x ou &h) que a diferencie como um número hexadecimal. Isso faz com que a operação de análise gere uma exceção.

Se s representar um número hexadecimal, o método Parse(String, NumberStyles) interpretará o bit de alta ordem do byte como um bit de sinal.

O parâmetro s é analisado usando as informações de formatação em um objeto NumberFormatInfo inicializado para a cultura atual do sistema. Para usar as informações de formatação de alguma outra cultura, chame a sobrecarga de Parse(String, NumberStyles, IFormatProvider).

Confira também

Aplica-se a