SByte-Datentyp (Visual Basic)

Speichert 8-Bit-Ganzzahlen mit Vorzeichen (1 Byte), deren Werte sich im Bereich von -128 bis 127 bewegen.

Bemerkungen

Verwenden Sie den SByte-Datentyp, um ganzzahlige Werte aufzunehmen, die nicht die vollständige Datenbreite von Integer oder sogar die halbe Datenbreite von Short erfordern. In einigen Fällen kann die Common Language Runtime Ihre SByte-Variablen eng zusammenpacken und Arbeitsspeicher sparen.

Der Standardwert von SByte lautet 0.

Literale Zuweisungen

Sie können eine SByte-Variable deklarieren und initialisieren, indem Sie ihr ein Dezimalliteral, ein hexadezimales Literal, ein oktales Literal oder (ab Visual Basic 2017) ein binäres Literal zuweisen.

Im folgenden Beispiel werden Ganzzahlen gleich -102, die als dezimale, hexadezimale und binäre Literale dargestellt werden, den SByte-Werten zugewiesen. In diesem Beispiel müssen Sie den /removeintchecks-Compilerschalter für die Kompilierung verwenden.

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

Hinweis

Verwenden Sie das Präfix &h oder &H zum Kennzeichnen eines hexadezimalen Literals, das Präfix &b oder &B zum Kennzeichnen eines binären Literals und das Präfix &o oder &O zum Kennzeichnen eines oktalen Literals. Dezimale Literale haben kein Präfix.

Ab Visual Basic 2017 können Sie zur besseren Lesbarkeit auch den Unterstrich (_) als Zifferntrennzeichen verwenden, wie im folgenden Beispiel veranschaulicht.

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

Ab Visual Basic 15.5 können Sie auch den Unterstrich (_) als vorangestelltes Trennzeichen zwischen dem Präfix und en hexadezimalen, binären oder oktalen Ziffern verwenden. Beispiel:

Dim number As SByte = &H_F9

Um den Unterstrich als vorangestelltes Trennzeichen verwenden zu können, müssen Sie Ihrer Visual Basic-Projektdatei (VBPROJ-Datei) das folgende Element hinzufügen:

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

Weitere Informationen finden Sie unter Auswählen der Visual Basic-Sprachversion.

Wenn Sich das Ganzzahlliteral außerhalb des Bereichs von SByte befindet – sprich, wenn es kleiner als SByte.MinValue oder größer als SByte.MaxValue ist – tritt ein Kompilierfehler auf. Wenn ein ganzzahliges Literal kein Suffix hat, wird ein ganzzahliger Wert abgeleitet. Wenn sich das ganzzahlige Literal außerhalb des Bereichs des Typs Integer befindet, wird ein Wert vom Typ Long abgeleitet. Dies bedeutet, dass im vorherigen Beispiel die numerischen Literale 0x9A und 0b10011010 als ganze 32-Bit-Zahlen mit Vorzeichen mit einem Wert von 156 interpretiert werden, was SByte.MaxValue übersteigt. Um Code wie diesen erfolgreich zu kompilieren, der SByte eine ganze Zahl (keine Dezimalzahl) zuweist, können Sie eine der folgenden Aktionen ausführen:

  • Deaktivieren Sie Überprüfungen auf Ganzzahlgrenzen, indem Sie den /removeintchecks-Compilerschalter für die Kompilierung verwenden.

  • Verwenden Sie ein Typzeichen, um den Literalwert explizit zu definieren, den Sie SByte zuweisen möchten. Im folgenden Beispiel wird SByte ein negativer Short-Literalwert zugewiesen. Beachten Sie, dass für negative Zahlen das höchstwertige Bit des höherwertigen Worts des numerischen Literals festgelegt werden muss. Im Fall unseres Beispiels ist dies Bit 15 des Literalwerts Short.

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

Programmiertipps

  • CLS-Kompatibilität. Der SByte-Datentyp ist nicht Teil der Common Language Specification (CLS), sodass CLS-kompatibler Code keine Komponente nutzen kann, die ihn verwendet.

  • Erweiterung. Der SByte-Datentyp wird zu Short, Integer, Long, Decimal, Single und Double erweitert. Dies bedeutet, dass Sie SByte in einen dieser Typen konvertieren können, ohne dass ein System.OverflowException-Fehler auftritt.

  • Typzeichen. SByte hat kein Literal-Typzeichen oder Bezeichner-Typzeichen.

  • Framework-Typ. Der entsprechende Typ in .NET Framework ist die System.SByte-Struktur.

Siehe auch