Constantes et types de données littérales

Mise à jour : novembre 2007

Un littéral est une valeur qui est exprimée comme elle-même plutôt que comme la valeur d'une variable ou le résultat d'une expression, tel que le nombre 3 ou la chaîne "Hello". Une constante est un nom significatif qui prend la place d'un littéral et conserve cette même valeur partout dans le programme, par opposition à une variable dont la valeur peut se modifier.

Si Option Strict a la valeur On, toutes les constantes doivent être explicitement déclarées avec un type de données. Dans l'exemple suivant, le type de données de MyByte est déclaré explicitement comme type de données Byte :

Option Strict On

Public Class Sample
  Public Const MyByte As Byte = 2
End Class

La déclaration explicite de types de données n'est pas ambiguë, et le code typé est plus simple à lire et à gérer que le code non typé. Toutefois, si Option Strict a la valeur Off, le compilateur utilise le type de l'expression qui a servi à initialiser la constante. Par défaut, un littéral entier numérique est casté en un type de données Integer. Le type de données par défaut des nombres à virgule flottante est Double, et les mots clés True et False spécifient une constante Boolean.

Littéraux et contrainte de type

Il arrive parfois que vous vouliez forcer un littéral en un type de données particulier ; par exemple, lors de l'assignation d'une très grande valeur littérale intégrale à une variable de type Decimal. L'exemple suivant génère une erreur :

Dim myDecimal as Decimal
myDecimal = 100000000000000000000   ' This causes a compiler error.

L'erreur provient de la représentation du littéral. Le type de données Decimal peut avoir une valeur de cette taille, mais le littéral est implicitement représenté comme un type Long qui ne peut pas contenir une telle valeur.

Vous pouvez forcer un littéral en un type de données particulier de deux façons : en lui ajoutant un caractère de type ou en le plaçant entre des caractères englobants. Un caractère de type ou des caractères englobants doivent immédiatement précéder et/ou suivre le littéral (aucun autre caractère ou espace ne doit venir s'interposer).

Pour que l'exemple précédent fonctionne, vous devez ajouter au littéral le caractère de type D, de sorte qu'il soit représenté en tant que type Decimal :

Dim MyDecimal As Decimal = 100000000000000000000D

L'exemple suivant illustre l'utilisation correcte des caractères de type et des caractères englobants :

' Default to Integer.
Public Const DefaultInteger As Integer = 100

' Default to Double.
Public Const DefaultDouble As Double = 54.3345612

' Force constant to be type Char.
Public Const MyCharacter As Char = "a"c

' DateTime constants.
Public Const MyDate As DateTime = #1/15/2001#
Public Const MyTime As DateTime = #1:15:59 AM#

' Force data type to be Long.
Public Const MyLong As Long = 45L

' Force data type to be Single.
Public Const MySingle As Single = 45.55!

Le tableau suivant répertorie les caractères englobants et les caractères de type disponibles dans Visual Basic.

Type de données

Caractère englobant

Caractère de type ajouté

Boolean

(aucune)

(aucune)

Byte

(aucune)

(aucune)

Char

"

C

Date

#

(aucune)

Decimal

(aucune)

D ou @

Double

(aucune)

R ou #

Integer

(aucune)

I ou %

Long

(aucune)

L ou &

Short

(aucune)

S

Single

(aucune)

F ou !

String

"

(aucune)

Voir aussi

Tâches

Comment : déclarer une constante

Comment : déclarer des énumérations

Concepts

Constantes définies par l'utilisateur

Vue d'ensemble des constantes

Vue d'ensemble des énumérations

Énumérations et qualification de noms

Constantes et énumérations intrinsèques

Référence

Option Strict, instruction

Option Explicit, instruction (Visual Basic)

Liste des types de données (Visual Basic)