Compartilhar via


Tipo de dados SByte (Visual Basic)

Armazena inteiros de 8 bits (1 byte) com sinal que variam de -128 a 127.

Comentários

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

O valor padrão de SByte é 0.

Atribuições literais

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

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

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

Observação

Use o prefixo &h ou &H para indicar um literal hexadecimal, &b ou &B para indicar um literal binário e &o ou &O para indicar um literal octal. Literais decimais não têm nenhum prefixo.

A partir do Visual Basic 2017, você também pode usar o caractere de sublinhado, _, como separador de dígitos para melhorar a legibilidade, como no 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 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 separador à esquerda, você deve adicionar o seguinte elemento ao arquivo de projeto do Visual Basic (*.vbproj):

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

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

Se o literal inteiro estiver fora do intervalo de SByte (ou seja, se for menor que SByte.MinValue ou maior que SByte.MaxValue, ocorrerá um erro de compilação. Quando um literal inteiro não tem sufixo, um inteiro é inferido. Se o literal inteiro estiver fora do intervalo do tipo Integer, um Long será inferido. Isso significa que, nos exemplos anteriores, os literais numéricos 0x9A e 0b10011010 são interpretados como inteiros com sinal 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 qualquer um dos seguintes procedimentos:

  • Desabilite verificações de limites de inteiro compilando com o comutador do compilador /removeintchecks.

  • Use um caractere de tipo para definir explicitamente o valor literal que você deseja atribuir ao SByte. O exemplo a seguir atribui um valor literal negativo Short a um SByte. Observe que, para números negativos, o bit de ordem superior da palavra de ordem superior 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

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

  • Ampliação. O tipo de dados SByte é ampliado para Short, Integer, Long, Decimal, Single e Double. Isso significa que você pode converter SByte em qualquer um desses tipos sem a ocorrência de um erro System.OverflowException.

  • Caracteres de tipo. SByte não tem nenhum caractere de tipo literal nem caractere de identificação de tipo.

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

Confira também