Tipo di dati SByte (Visual Basic)

Contiene interi con segno a 8 bit (1 byte) con valori compresi tra -128 e 127.

Osservazioni:

Utilizzare il tipo di dati SByte per contenere valori interi che non richiedono l'intera larghezza dei dati di Integer o anche la metà della larghezza dei dati di Short. In alcuni casi Common Language Runtime potrebbe essere in grado di comprimere strettamente le variabili SByte e risparmiare l'utilizzo della memoria.

Il valore predefinito di SByte è 0.

Assegnazioni di valori letterali

È possibile dichiarare e inizializzare una variabile SByte assegnandole un valore letterale decimale, un valore letterale esadecimale, un valore letterale ottale o (a partire da Visual Basic 2017) un valore letterale binario.

Nell'esempio seguente, gli interi uguali a -102 rappresentati come valori letterali decimali, esadecimali e binari vengono assegnati ai valori SByte. Questo esempio richiede la compilazione con l'opzione del compilatore /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

Nota

Si utilizza il prefisso &h o &H per indicare un valore letterale esadecimale, il prefisso &b o &B per indicare un valore letterale binario e il prefisso &o o &O per indicare un valore letterale ottale. I valori letterali decimali non hanno prefissi.

A partire da Visual Basic 2017, è possibile anche usare il carattere underscore, _, come separatore di cifre per migliorare la leggibilità, come illustrato nell'esempio seguente.

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

A partire da Visual Basic 15.5, è possibile anche usare il carattere underscore (_) come separatore iniziale tra il prefisso e le cifre esadecimali, binarie oppure ottali. Ad esempio:

Dim number As SByte = &H_F9

Per usare il carattere underscore come separatore iniziale, è necessario aggiungere l'elemento seguente al file di progetto Visual Basic (*.vbproj):

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

Per altre informazioni, vedere Selezionare la versione del linguaggio Visual Basic.

Se il valore letterale integer è esterno all'intervallo di SByte, vale a dire se è minore di SByte.MinValue o maggiore di SByte.MaxValue, si verifica un errore di compilazione. Quando un valore letterale intero non ha suffisso, viene dedotto un Integer. Se il valore letterale intero non è compreso nell'intervallo del tipo Integer, viene dedotto un Long. Ciò significa che, negli esempi precedenti, i valori letterali numerici 0x9A e 0b10011010 vengono interpretati come interi con segno a 32 bit con un valore di 156, che supera SByte.MaxValue. Per compilare correttamente un codice come questo che assegna un intero non decimale a un SByte, è possibile eseguire una delle operazioni seguenti:

  • Disabilitare i controlli dei limiti degli interi compilando con l'opzione del compilatore /removeintchecks.

  • Usare un carattere di tipo per definire in modo esplicito il valore letterale da assegnare a SByte. L'esempio seguente assegna un valore letterale negativo Short a un SByte. Si noti che, per i numeri negativi, deve essere impostato il bit di ordine superiore della word di ordine superiore del valore letterale numerico. Nel caso del nostro esempio, questo è il bit 15 del valore letterale Short.

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

Suggerimenti per la programmazione

  • Conformità a CLS. Il tipo di dati SByte non fa parte del Common Language Specification (CLS), pertanto il codice conforme a CLS non può utilizzare un componente che usa tale tipo di dati.

  • Widening. Il tipo di dati SByte si allarga a Short, Integer, Long, Decimal, Single e Double. Ciò significa che è possibile convertire SByte in uno di questi tipi senza generare un errore System.OverflowException.

  • Caratteri di tipo. SByte non ha alcun carattere di tipo letterale o di tipo identificatore.

  • Tipo di Framework. Il tipo corrispondente in .NET Framework è la struttura System.SByte.

Vedi anche