Partager via


Résumé du type de données (Visual Basic)

Le tableau suivant présente les types de données Visual Basic, leurs types common language runtime pris en charge, leur allocation de stockage nominale et leurs plages de valeurs.

Type Visual Basic Structure de type 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 octets 0 à 255 (non signé)
Char (caractère unique) Char 2 octets 0 à 65535 (non signé)
Date DateTime 8 octets 0:00:00 (minuit) le 1er janvier 0001 à 11:59:59 pm le 31 décembre 9999
Décimal Decimal 16 octets 0 à +/-79 228 162 514 264 337 593 543 950 335 (+/-7.9...E+28) sans décimale ; 0 à +/-7.9228162514264337593593535 avec 28 places à droite de la décimale ;

le plus petit nombre différent de zéro est +/-0.0000000000000000000000001 (+/-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
Entier 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 la plateforme 64 bits
Tout type peut être stocké dans une variable de type Object
SByte SByte 1 octets -128 à 127 (signé)
Short (entier court) Int16 2 octets -32 768 à 32 767 (signé)
Single (à 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é)
Défini par l’utilisateur (structure) (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épendamment 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.

Remarque

Pour les chaînes contenant du texte, utilisez la StrConv fonction pour convertir d’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. Cela 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 pleine, elle peut empaqueter vos éléments déclarés aussi étroitement que possible. Dans d’autres cas, il peut aligner leurs adresses mémoire sur les limites matérielles naturelles pour optimiser les performances.

  • Largeur de la plateforme. L’attribution de stockage sur une plateforme 64 bits diffère 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 vous appuyer simplement sur l’ajout des allocations de stockage nominales des membres du type. En outre, il existe d’autres considérations, telles que les suivantes :

  • Frais généraux. Certains types composites ont des besoins en mémoire supplémentaires. 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 en toute sécurité que l’ordre de stockage en mémoire est identique à votre ordre de déclaration. Vous ne pouvez même pas faire d’hypothèses sur l’alignement d’octets, comme 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