Partager via


Comment : augmenter la durée de vie d'une variable

Mise à jour : novembre 2007

Normalement, une variable cesse d'exister lorsque l'élément de programmation dans lequel elle est déclarée cesse d'exister. Toutefois, vous pouvez augmenter sa durée de vie pour qu'elle soit plus longue que l'élément la contenant en la déclarant à l'aide du mot clé Static (Visual Basic).

Pour plus d'informations, consultez Durée de vie dans Visual Basic.

Pour faire vivre une variable plus longtemps que l'élément la contenant

  • Si la variable est une variable locale (déclarée à l'intérieur d'une procédure), insérez le mot clé Static dans Dim, instruction (Visual Basic) qui la déclare. Une variable statique existe aussi longtemps que la classe ou le module contenant la procédure qui déclare la variable.

    Si une variable locale se trouve à l'intérieur d'une procédure Shared (Visual Basic), la procédure et ses variables existent aussi longtemps que votre application s'exécute. N'utilisez pas Static dans ce cas.

  • Si la variable est une variable membre (déclarée dans une classe ou une structure à l'extérieur de toute procédure), insérez le mot clé Shared dans l'instruction Dim qui la déclare. Une variable commune n'est associée à aucune instance de sa classe ni de sa structure, et elle existe aussi longtemps que votre application s'exécute. Vous ne pouvez pas utiliser Static sur une variable membre.

    Si une variable membre est déclarée dans un module, elle existe toujours aussi longtemps que votre application s'exécute. N'utilisez pas Shared dans ce cas.

Exemple

L'exemple suivant déclare une variable à l'aide du mot clé Static (Visual Basic). (Notez que vous n'avez pas besoin du mot clé Dim lorsque Dim, instruction (Visual Basic) utilise un modificateur, tel que Static.)

Function runningTotal(ByVal num As Integer) As Integer
    Static applesSold As Integer
    applesSold = applesSold + num
    Return applesSold
End Function

Dans l'exemple précédent, la variable applesSold continue d'exister après que la procédure runningTotal retourne au code appelant. La prochaine fois que runningTotal est appelé, applesSold conserve sa valeur précédemment calculée.

Si applesSold avait été déclaré sans utiliser Static, les valeurs précédemment accumulées n'auraient pas été conservées d'un appel à l'autre à runningTotal. Au prochain appel de runningTotal, applesSold aurait été recréé et initialisé à 0 et runningTotal aurait simplement retourné la même valeur que celle avec laquelle elle avait été appelée.

Compilation du code

Vous pouvez initialiser la valeur d'une variable locale statique dans sa déclaration. Si vous déclarez un tableau Static, vous pouvez initialiser son rang (nombre de dimensions), la longueur de chaque dimension et les valeurs de chaque élément.

Variables statiques du même nom

Vous pouvez déclarer des variables statiques avec le même nom dans plusieurs procédures. Dans ce cas, le compilateur Visual Basic considère chacune des variables comme un élément distinct. L'initialisation d'une de ces variables n'affecte pas les valeurs des autres. C'est également vrai si vous définissez une procédure avec un ensemble de surcharges et que vous déclarez une variable statique avec le même nom dans chaque surcharge.

Éléments conteneurs pour les variables statiques

Vous pouvez déclarer une variable locale statique dans une classe, c'est-à-dire dans une procédure au sein de cette classe. Toutefois, vous ne pouvez pas déclarer une variable locale statique dans une structure, ni comme membre de structure ni comme variable locale d'une procédure dans cette structure.

Sécurité

Dans l'exemple précédent, vous pouvez obtenir la même durée de vie en déclarant applesSold au niveau du module. Toutefois, si vous avez modifié de la sorte la portée d'une variable, la procédure ne dispose plus d'un accès exclusif à celle-ci. Dans la mesure où d'autres procédures peuvent accéder à applesSold et modifier sa valeur, le total évolutif n'est plus fiable et le code est plus difficile à gérer.

Voir aussi

Concepts

Durée de vie dans Visual Basic

Caractéristiques d'éléments déclarés

Portée dans Visual Basic

Niveaux d'accès dans Visual Basic

Variables en Visual Basic

Déclaration de variable en Visual Basic

Surcharge de procédure