ULong, type de données (Visual Basic)

Contient des entiers 64 bits (8 octets) non signés dont la valeur est comprise entre 0 et 18 446 744 073 709 551 615 (plus de 1,84 fois 10^19).

Notes

Utilisez le type de données ULong pour contenir des données binaires trop volumineuses pour UInteger, ou les plus grandes valeurs entières non signées possibles.

La valeur par défaut de ULong est 0.

Affectations littérales

Vous pouvez déclarer et initialiser une variable ULong en lui affectant un littéral décimal, un littéral hexadécimal, un littéral octal ou (à partir de Visual Basic 2017) un littéral binaire. Si le littéral entier est en dehors de la plage de ULong (autrement dit, s’il est inférieur à UInt64.MinValue ou supérieur à UInt64.MaxValue, une erreur de compilation se produit.

Dans l’exemple suivant, les entiers égaux à 7 934 076 125 représentés comme des littéraux décimaux, hexadécimaux et binaires sont assignés aux valeurs ULong.

Dim ulongValue1 As ULong = 7934076125
Console.WriteLine(ulongValue1)

Dim ulongValue2 As ULong = &H0001D8e864DD
Console.WriteLine(ulongValue2)

Dim ulongValue3 As ULong = &B0001_1101_1000_1110_1000_0110_0100_1101_1101
Console.WriteLine(ulongValue3)
' The example displays the following output:
'          7934076125
'          7934076125
'          7934076125

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 longValue1 As Long = 4_294_967_296
Console.WriteLine(longValue1)

Dim longValue2 As Long = &H1_0000_0000
Console.WriteLine(longValue2)

Dim longValue3 As Long = &B1_0000_0000_0000_0000_0000_0000_0000_0000
Console.WriteLine(longValue3)
' The example displays the following output:
'          4294967296
'          4294967296
'          4294967296

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 ULong = &H_F9AC_0326_1489_D68C

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.

Les littéraux numériques peuvent également inclure le UL ou le ulcaractère de type pour désigner le type de données ULong, comme le montre l’exemple suivant.

Dim number = &H_00_00_0A_96_2F_AC_14_D7ul

Conseils de programmation

  • Nombres négatifs. Étant donné que ULong est un type non signé, il ne peut pas représenter un nombre négatif. Si vous utilisez l’opérateur unaire moins (-) sur une expression qui prend la valeur de type ULong, Visual Basic convertit d’abord l’expression en Decimal.

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

  • Considérations sur l'interopérabilité. Si vous utilisez des composants non écrits pour le .NET Framework, par exemple des objets Automation ou COM, n’oubliez pas que les types comme ulong peuvent avoir une largeur de données différente (32 bits) dans les autres environnements. Si vous passez un argument de 32 bits à un tel composant, déclarez-le en tant que type de données UInteger et non ULong dans votre code Visual Basic managé.

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

  • Caractères de type. L’ajout de caractères de type littéral UL à un littéral force ce dernier en type de données ULong. ULong ne possède pas de caractère de type d’identificateur.

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

Voir aussi