UInteger (type de données)

Contient des entiers 32 bits (4 octets) non signés dont la valeur est comprise entre 0 et 4 294 967 295.

Notes

Le type de données UInteger fournit la plus grande valeur non signée dans la largeur de données la plus efficace.

La valeur par défaut de UInteger est 0.

Affectations littérales

Vous pouvez déclarer et initialiser une variable UInteger 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 UInteger (autrement dit, s’il est inférieur à UInt32.MinValue ou supérieur à UInt32.MaxValue, une erreur de compilation se produit.

Dans l’exemple suivant, les entiers égaux à 3 000 000 000 représentés comme des littéraux décimaux, hexadécimaux et binaires sont assignés aux valeurs UInteger.

Dim uintValue1 As UInteger = 3000000000ui
Console.WriteLine(uintValue1)

Dim uintValue2 As UInteger = &HB2D05E00ui
Console.WriteLine(uintValue2)

Dim uintValue3 As UInteger = &B1011_0010_1101_0000_0101_1110_0000_0000ui
Console.WriteLine(uintValue3)
' The example displays the following output:
'          3000000000
'          3000000000
'          3000000000

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 uintValue1 As UInteger = 3_000_000_000ui
Console.WriteLine(uintValue1)

Dim uintValue2 As UInteger = &HB2D0_5E00ui
Console.WriteLine(uintValue2)

Dim uintValue3 As UInteger = &B1011_0010_1101_0000_0101_1110_0000_0000ui
Console.WriteLine(uintValue3)
' The example displays the following output:
'          3000000000
'          3000000000
'          3000000000

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 UInteger = &H_0F8C_0326

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 UI ou le uicaractère de type pour désigner le type de données UInteger, comme le montre l’exemple suivant.

Dim number = &H_0FAC_14D7ui

Conseils de programmation

Les types de données UInteger et Integer fournissent des performances optimales sur un processeur 32 bits, car les plus petits types entiers (UShort, Short, Byteet SByte), même s’ils utilisent moins de bits, prennent plus de temps pour charger, stocker et extraire.

  • Nombres négatifs. Étant donné que UInteger 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 UInteger, Visual Basic convertit d’abord l’expression en Long.

  • Conformité CLS. Le type de données UInteger 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 uint peuvent avoir une largeur de données différente (16 bits) dans les autres environnements. Si vous passez un argument de 16 bits à un tel composant, déclarez-le en tant que type de données UShort et non UInteger dans votre code Visual Basic managé.

  • Extension. Le type de données UInteger s’étend à Long, ULong, Decimal, Single et Double. Cela signifie que vous pouvez convertir UInteger 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 UI à un littéral force ce dernier en type de données UInteger. UInteger 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.UInt32.

Voir aussi