Liste des types de données (Visual Basic)

Le tableau suivant montre les types de données Visual Basic, leur prise en charge des types du Common Language Runtime, leur allocation de stockage nominale et leurs plages de valeurs.

Type de Visual Basic Type de structure du Common Language Runtime Allocation de stockage nominale Plage de valeurs
Booléen Boolean Dépend de l’implémentation de la plateforme True ou False
Byte Byte 1 octet 0 à 255 (non signé)
Char (caractère unique) Char 2 octets 0 à 65535 (non signé)
Date DateTime 8 octets Du 1er janvier 0001 0:00:00 au 31 décembre 9999 23:59:59
Décimal Decimal 16 octets 0 à +/- 79 228 162 514 264 337 593 543 950 335 (+/- 7,9... E+28) sans virgule décimale ; 0 à +/- +/-7,9228162514264337593543950335 avec 28 places à la droite de la décimale ;

le plus petit nombre non nul est +/-0,0000000000000000000000000001 (+/-1E-28)
Double (virgule flottante à double précision) Double 8 octets -1,79769313486231570E+308 à -4,94065645841246544E-324 pour les valeurs négatives ;

4,94065645841246544E-324 à 1,79769313486231570E+308 pour les valeurs positives
Integer Int32 4 octets -2 147 483 648 à 2 147 483 647 (signé)
Long (entier long) Int64 8 octets -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 (9,2...E+18 ) (signé)
Object Object (classe) 4 octets sur une plateforme 32 bits

8 octets sur une plateforme 64 bits
Tout type peut être stocké dans une variable de type Object
SByte SByte 1 octet -128 à 127 (signé)
Court (entier court) Int16 2 octets -32 768 à 32 767 (signé)
Simple (virgule flottante à simple précision) Single 4 octets -3,4028235E+38 à -1,401298E-45 pour les valeurs négatives ;

1,401298E-45 à 3,4028235E+38 pour les valeurs positives
Chaîne (longueur variable) String (classe) Dépend de l’implémentation de la plateforme 0 à environ 2 milliards de caractères Unicode
UInteger UInt32 4 octets 0 à 4 294 967 295 (non signé)
ULong UInt64 8 octets 0 à 18 446 744 073 709 551 615 (1,8...E+19 ) (non signé)
(Structure) définie par l’utilisateur (hérite de ValueType) Dépend de l’implémentation de la plateforme Chaque membre de la structure a une plage déterminée par son type de données et indépendante des plages des autres membres
UShort UInt16 2 octets 0 à 65 535 (non signé)

En notation scientifique, « E » fait référence à une puissance de 10. Ainsi, 3,56E+2 signifie 3,56 x 102 ou 356, et 3,56E-2 signifie 3,56 / 102 ou 0,0356.

Notes

Pour les chaînes contenant du texte, utilisez la StrConv fonction pour convertir un format de texte à un autre.

En plus de spécifier un type de données dans une instruction de déclaration, vous pouvez forcer le type de données de certains éléments de programmation à l’aide d’un caractère de type. Voir caractères de type.

Consommation de mémoire

Lorsque vous déclarez un type de données élémentaire, il n’est pas sûr de supposer que sa consommation de mémoire est identique à son allocation de stockage nominale. Ceci est dû aux considérations suivantes :

  • Affectation de stockage. Le Common Language Runtime peut affecter le stockage en fonction des caractéristiques actuelles de la plateforme sur laquelle votre application s’exécute. Si la mémoire est presque complète, il peut regrouper vos éléments déclarés aussi étroitement que possible. Dans d’autres cas, il peut aligner leurs adresses de mémoire sur les limites matérielles naturelles pour optimiser les performances.

  • Largeur de la plateforme. L’affectation de stockage sur une plateforme 64 bits est différente de l’affectation sur une plateforme 32 bits.

Types de données composites

Les mêmes considérations s’appliquent à chaque membre d’un type de données composite, tel qu’une structure ou un tableau. Vous ne pouvez pas compter simplement sur l’addition des allocations de stockage nominales des membres du type. En outre, il existe d’autres considérations, telles que les suivantes :

  • Surcharge. Certains types composites ont des exigences supplémentaires en mémoire. Par exemple, un tableau utilise une mémoire supplémentaire pour le tableau lui-même et également pour chaque dimension. Sur une plateforme 32 bits, cette surcharge est actuellement de 12 octets plus 8 octets pour chaque dimension. Sur une plateforme 64 bits, cette exigence est doublée.

  • Disposition du stockage. Vous ne pouvez pas supposer avec certitude que l’ordre de stockage en mémoire est identique à votre ordre de déclaration. Vous ne pouvez même pas faire des hypothèses sur l’alignement d’octets, telles qu’une limite de 2 octets ou de 4 octets. Si vous définissez une classe ou une structure et que vous devez contrôler la disposition de stockage de ses membres, vous pouvez appliquer l’attribut StructLayoutAttribute à la classe ou à la structure.

Surcharge d’objet

Une Object référence à n’importe quel type de données élémentaire ou composite utilise 4 octets en plus des données contenues dans le type de données.

Voir aussi