SByte, type de données (Visual Basic)

Contient des entiers 8 bits (1 octet) signés dont la valeur est comprise entre -128 et 127.

Notes

Utilisez le type de données SByte pour contenir des valeurs entières qui ne nécessitent pas la largeur de données complète du type Integer ni même la demi-largeur de données de Short. Dans certains cas, le Common Language Runtime peut regrouper étroitement vos variables SByte et réduire la consommation de mémoire.

La valeur par défaut de SByte est 0.

Affectations littérales

Vous pouvez déclarer et initialiser une variable SByte en lui attribuant un littéral décimal, un littéral hexadécimal, un littéral octal ou (à partir de Visual Basic 2017) un littéral binaire.

Dans l’exemple suivant, les entiers égaux à -102 représentés comme des littéraux décimaux, hexadécimaux et binaires ont des valeurs SByte. Dans cet exemple, vous devez compiler avec le commutateur de compilateur /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

Notes

Vous utilisez le préfixe &h ou &H pour désigner un littéral hexadécimal, le préfixe &b ou &B pour désigner un littéral binaire, et le préfixe &o ou &O pour désigner un littéral octal. Les littéraux décimaux n’ont pas de préfixe.

À compter de Visual Basic 2017, vous pouvez également utiliser le caractère de soulignement, _, comme un séparateur numérique pour améliorer la lisibilité, comme dans l’exemple suivant.

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

Depuis Visual Basic 15.5, vous pouvez également utiliser le caractère de soulignement (_) comme séparateur de début entre le préfixe et les chiffres hexadécimaux, binaires ou octaux. Par exemple :

Dim number As SByte = &H_F9

Pour utiliser le caractère de soulignement comme séparateur de début, vous devez ajouter l’élément suivant à votre fichier projet Visual Basic (*.vbproj) :

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

Pour plus d’informations, consultez Sélectionner la version du langage Visual Basic.

Si le littéral entier est en dehors de la plage de SByte (autrement dit, s’il est inférieur à SByte.MinValue ou supérieur à SByte.MaxValue, une erreur de compilation se produit. Quand un littéral entier n’a pas de suffixe, un type Integer est déduit. Si le littéral entier se trouve en dehors de la plage du type Integer, un type Long est déduit. Cela signifie que, dans les exemples précédents, les littéraux numériques 0x9A et 0b10011010 sont interprétés comme des entiers signés 32 bits avec une valeur de 156, ce qui dépasse SByte.MaxValue. Pour compiler correctement ce type de code qui attribue un entier non décimal à un type SByte, vous pouvez effectuer une des opérations suivantes :

  • Désactiver les vérifications de limites des entiers en compilant avec le commutateur de compilateur /removeintchecks.

  • Utiliser un caractère de type pour définir explicitement la valeur littérale que vous voulez attribuer au type SByte. L’exemple suivant attribue une valeur littérale Short négative à un type SByte. Notez que, pour les nombres négatifs, le bit d’ordre haut du mot d’ordre haut du littéral numérique doit être défini. Dans notre exemple, il s’agit du bit 15 de la valeur littérale Short.

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

Conseils de programmation

  • Conformité CLS. Le type de données SByte ne fait pas partie de la CLS (Common Language Specification), de sorte que le code conforme CLS ne peut pas consommer un composant qui l’utilise.

  • Extension. Le type de données SByte s’étend à Short, Integer, Long, Decimal, Single et Double. Cela signifie que vous pouvez convertir SByte en un de ces types sans rencontrer d’erreur System.OverflowException.

  • Caractères de type. SByte n’a pas de caractère de type littéral ni de caractère de type identificateur.

  • Type .NET Framework. Le type correspondant dans le .NET Framework est la structure System.SByte.

Voir aussi