Tipo di dati SByte (Visual Basic)SByte data type (Visual Basic)

Include interi con segno a 8 bit (1 byte) compresi tra-128 e 127.Holds signed 8-bit (1-byte) integers that range in value from -128 through 127.

NoteRemarks

Utilizzare il tipo di dati SByte per contenere valori integer che non richiedono la larghezza dei dati completa di Integer o anche la lunghezza della metà dei dati di Short.Use the SByte data type to contain integer values that do not require the full data width of Integer or even the half data width of Short. In alcuni casi, il Common Language Runtime potrebbe essere in grado di comprimere le variabili di SByte e risparmiare sull'utilizzo della memoria.In some cases, the common language runtime might be able to pack your SByte variables closely together and save memory consumption.

Il valore predefinito di SByte è 0.The default value of SByte is 0.

Assegnazioni di valori letteraliLiteral assignments

È possibile dichiarare e inizializzare una variabile di SByte assegnando un valore letterale decimale, un valore letterale esadecimale, un valore letterale ottale o (a partire da Visual Basic 2017) un valore letterale binario.You can declare and initialize an SByte variable by assigning it a decimal literal, a hexadecimal literal, an octal literal, or (starting with Visual Basic 2017) a binary literal.

Nell'esempio seguente, i numeri interi uguali a-102 rappresentati come valori letterali decimali, esadecimali e binari vengono assegnati ai valori SByte.In the following example, integers equal to -102 that are represented as decimal, hexadecimal, and binary literals are assigned to SByte values. Questo esempio richiede la compilazione con l'opzione del compilatore /removeintchecks.This example requires that you compile with the /removeintchecks compiler switch.

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

Usare 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.You use the prefix &h or &H to denote a hexadecimal literal, the prefix &b or &B to denote a binary literal, and the prefix &o or &O to denote an octal literal. I valori letterali decimali non hanno prefissi.Decimal literals have no prefix.

A partire da Visual Basic 2017, è anche possibile usare il carattere di sottolineatura, _, come separatore di cifre per migliorare la leggibilità, come illustrato nell'esempio seguente.Starting with Visual Basic 2017, you can also use the underscore character, _, as a digit separator to enhance readability, as the following example shows.

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

A partire da Visual Basic 15,5, è anche possibile usare il carattere di sottolineatura (_) come separatore iniziale tra il prefisso e le cifre esadecimali, binarie o ottali.Starting with Visual Basic 15.5, you can also use the underscore character (_) as a leading separator between the prefix and the hexadecimal, binary, or octal digits. Esempio:For example:

Dim number As SByte = &H_F9

Per usare il carattere di sottolineatura come separatore iniziale, è necessario aggiungere l'elemento seguente al file di progetto (*.vbproj) di Visual Basic:To use the underscore character as a leading separator, you must add the following element to your Visual Basic project (*.vbproj) file:

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

Per altre informazioni, vedere impostando la versione del linguaggio Visual Basic.For more information see setting the Visual Basic language version.

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.If the integer literal is outside the range of SByte (that is, if it is less than SByte.MinValue or greater than SByte.MaxValue, a compilation error occurs. Quando un valore letterale integer non ha alcun suffisso, viene dedotto un valore integer .When an integer literal has no suffix, an Integer is inferred. Se il valore letterale integer non è compreso nell'intervallo del tipo di Integer, viene dedotto un valore Long .If the integer literal is outside the range of the Integer type, a Long is inferred. Ciò significa che, negli esempi precedenti, i valori letterali numerici 0x9A e 0b10011010 sono interpretati come interi con segno a 32 bit con un valore di 156, che supera SByte.MaxValue.This means that, in the previous examples, the numeric literals 0x9A and 0b10011010 are interpreted as 32-bit signed integers with a value of 156, which exceeds SByte.MaxValue. Per compilare correttamente codice simile a questo che assegna un Integer non decimale a una SByte, è possibile eseguire una delle operazioni seguenti:To successfully compile code like this that assigns a non-decimal integer to an SByte, you can do either of the following:

  • Disabilitare i controlli dei limiti Integer compilando con l'opzione del compilatore /removeintchecks.Disable integer bounds checks by compiling with the /removeintchecks compiler switch.

  • Usare un carattere tipo per definire in modo esplicito il valore letterale che si vuole assegnare al SByte.Use a type character to explicitly define the literal value that you want to assign to the SByte. Nell'esempio seguente viene assegnato un valore letterale negativo Short a un SByte.The following example assigns a negative literal Short value to an SByte. Si noti che, per i numeri negativi, è necessario impostare il bit più significativo della parola più ordinata del valore letterale numerico.Note that, for negative numbers, the high-order bit of the high-order word of the numeric literal must be set. Nel caso dell'esempio, si tratta del bit 15 del valore letterale Short.In the case of our example, this is bit 15 of the literal Short value.

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

Suggerimenti per la programmazioneProgramming tips

  • Conformità a CLS.CLS Compliance. Il tipo di dati SByte non fa parte della Common Language Specification (CLS), pertanto il codice conforme a CLS non può utilizzare un componente che lo utilizza.The SByte data type is not part of the Common Language Specification (CLS), so CLS-compliant code cannot consume a component that uses it.

  • Conversioni.Widening. Il tipo di dati SByte viene ampliato in Short, Integer, Long, Decimal, Single e Double.The SByte data type widens to Short, Integer, Long, Decimal, Single, and Double. Ciò significa che è possibile convertire SByte in uno di questi tipi senza riscontrare un errore System.OverflowException.This means you can convert SByte to any of these types without encountering a System.OverflowException error.

  • Digitare i caratteri.Type Characters. SByte non ha un carattere di tipo letterale o un carattere di tipo identificatore.SByte has no literal type character or identifier type character.

  • Tipo di Framework.Framework Type. Il tipo corrispondente in .NET Framework è la struttura System.SByte.The corresponding type in the .NET Framework is the System.SByte structure.

Vedere ancheSee also