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 negativoShort
a unSByte
. 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 letteraleShort
.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 aShort
,Integer
,Long
,Decimal
,Single
eDouble
. Ciò significa che è possibile convertireSByte
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.