Partilhar via


Tipo de dados SByte (Visual Basic)

Contém inteiros assinados de 8 bits (1 byte) que variam em valor de -128 a 127.

Observações

Use o SByte tipo de dados para conter valores inteiros que não exigem a largura total dos dados ou Integer mesmo a metade da largura dos dados do Short. Em alguns casos, o Common Language Runtime pode ser capaz de agrupar suas SByte variáveis e economizar o consumo de memória.

O valor padrão de SByte é 0.

Atribuições literais

Você pode declarar e inicializar uma SByte variável atribuindo-lhe um literal decimal, um literal hexadecimal, um literal octal ou (a partir do Visual Basic 2017) um literal binário.

No exemplo a seguir, inteiros iguais a -102 que são representados como literais decimais, hexadecimais e binários são atribuídos a SByte valores. Este exemplo requer que você compile com a opção do /removeintchecks compilador.

Dim sbyteValue1 As SByte = -102
Console.WriteLine(sbyteValue1)

Dim sbyteValue4 As SByte = &H9A
Console.WriteLine(sbyteValue4)

Dim sbyteValue5 As SByte = &B1001_1010
Console.WriteLine(sbyteValue5)
' The example displays the following output:
'          -102
'          -102
'          -102

Nota

Você usa o prefixo &h ou &H para denotar um literal hexadecimal, o prefixo &b ou &B para denotar um literal binário e o prefixo &o ou &O para denotar um literal octal. Os literais decimais não têm prefixo.

A partir do Visual Basic 2017, você também pode usar o caractere de sublinhado, _, como um separador de dígitos para melhorar a legibilidade, como mostra o exemplo a seguir.

Dim sbyteValue3 As SByte = &B1001_1010
Console.WriteLine(sbyteValue3)
' The example displays the following output:
'          -102

A partir do Visual Basic 15.5, você também pode usar o caractere de sublinhado (_) como um separador à esquerda entre o prefixo e os dígitos hexadecimais, binários ou octais. Por exemplo:

Dim number As SByte = &H_F9

Para usar o caractere de sublinhado como um separador à esquerda, você deve adicionar o seguinte elemento ao seu arquivo de projeto do Visual Basic (*.vbproj):

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

Para obter mais informações, consulte Selecione a versão da linguagem Visual Basic.

Se o literal inteiro estiver fora do intervalo de (isto é, se for menor SByte.MinValue ou maior que SByte.MaxValue, ocorrerá um erro de SByte compilação. Quando um literal inteiro não tem sufixo, um inteiro é inferido. Se o literal inteiro estiver fora do intervalo do Integer tipo, um Long é inferido. Isso significa que, nos exemplos anteriores, os literais numéricos 0x9A e 0b10011010 são interpretados como inteiros assinados de 32 bits com um valor de 156, que excede SByte.MaxValue. Para compilar com êxito um código como este, que atribui um inteiro não decimal a um SByte, você pode fazer o seguinte:

  • Desative as verificações de limites inteiros compilando com a opção do /removeintchecks compilador.

  • Use um caractere de texto para definir explicitamente o valor literal que você deseja atribuir ao SByte. O exemplo a seguir atribui um valor literal Short negativo a um SBytearquivo . Observe que, para números negativos, o bit de ordem alta da palavra de ordem alta do literal numérico deve ser definido. No caso do nosso exemplo, este é o bit 15 do valor literal Short .

    Dim sByteValue1 As SByte = &HFF_9As
    Dim sByteValue2 As SByte = &B1111_1111_1001_1010s
    Console.WriteLine(sByteValue1)
    Console.WriteLine(sByteValue2)
    

Dicas de programação

  • Conformidade CLS. O SByte tipo de dados não faz parte da Common Language Specification (CLS), portanto, o código compatível com CLS não pode consumir um componente que o usa.

  • Alargamento. O SByte tipo de dados é ampliado para Short, Integer, , LongDecimal, Singlee Double. Isso significa que você pode converter SByte para qualquer um desses tipos sem encontrar um System.OverflowException erro.

  • Digite caracteres.SByte não tem nenhum caractere de tipo literal ou caractere de tipo de identificador.

  • Tipo de estrutura. O tipo correspondente no .NET Framework é a System.SByte estrutura.

Consulte também