Durée de vie dans Visual Basic

Mise à jour : novembre 2007

La durée de vie d'un élément déclaré est la période pendant laquelle il est accessible et peut être utilisé. Les variables sont les seuls éléments qui ont une durée de vie. Pour cette raison, le compilateur traite les paramètres de procédure et les retours de fonction comme des cas spéciaux de variables. La durée de vie d'une variable représente la période pendant laquelle elle peut stocker une valeur. La variable peut voir sa valeur varier au cours de sa durée de vie, mais elle stocke toujours une valeur quelconque.

Durées de vie différentes

Une variable membre (déclarée au niveau du module, à l'extérieur de toute procédure) a en général le même durée de vie que l'élément dans laquelle elle est déclarée. Une variable non partagée déclarée dans une classe ou une structure existe en tant que copie séparée pour chaque instance de la classe ou de la structure dans laquelle elle est déclarée. Chaque variable de ce genre a la même durée de vie que son instance. Toutefois, une variable Shared a une seule durée de vie qui correspond à la durée d'exécution de votre application.

Une variable locale (déclarée à l'intérieur d'une procédure) existe uniquement tant que la procédure dans laquelle elle est déclarée s'exécute. C'est également le cas des paramètres de cette procédure et de tout retour de fonction. Toutefois, si la procédure appelle d'autres procédures, les variables locales conservent leurs valeurs pendant la durée d'exécution des procédures appelées.

Début de la durée de vie

La durée de vie d'une variable locale commence au moment où le contrôle pénètre dans la procédure dans laquelle elle est déclarée. Chaque variable locale est initialisée avec la valeur par défaut de son type de données dès que la procédure est exécutée. Lorsque la procédure rencontre une instruction Dim qui spécifie des valeurs initiales, elle donne ces valeurs aux variables, même si votre code leur avait déjà assigné d'autres valeurs.

Chaque membre d'une variable structure est initialisé comme s'il s'agissait d'une variable distincte. De la même façon, chaque élément d'une variable tableau est initialisé individuellement.

Les variables déclarées dans un bloc à l'intérieur d'une procédure (tel qu'une boucle For) sont initialisées lors de l'entrée dans la procédure. Ces initialisations entrent en vigueur même si votre code n'exécute pas le bloc.

Fin de la durée de vie

Lorsqu'une procédure se termine, les valeurs de ses variables locales ne sont pas conservées et Visual Basic libère leur mémoire. La prochaine fois que vous appelez la procédure, toutes ses variables locales sont recréées et réinitialisées.

Lorsqu'une instance d'une classe ou d'une structure prend fin, ses variables non partagées perdent leur mémoire et leur valeur. Chaque nouvelle instance de la classe ou de la structure crée et réinitialise ses variables non partagées. Toutefois, les variables Shared sont conservées jusqu'au terme de l'exécution de votre application.

Extension de la durée de vie

Si vous déclarez une variable locale avec le mot clé Static, sa durée de vie est plus longue que le temps d'exécution de sa procédure. Le tableau suivant montre comment la déclaration de procédure détermine la durée de vie d'une variable Static.

Emplacement de procédure et partage

La durée de vie de variable statique commence

La durée de vie de variable statique se termine

Dans un module (partagé par défaut)

Au premier appel de la procédure

À l'arrêt de l'exécution de votre application

Dans une classe ou une structure, Shared (la procédure n'est pas un membre d'instance)

Au premier appel de la procédure sur une instance spécifique ou sur le nom de classe ou de structure lui-même

À l'arrêt de l'exécution de votre application

Dans une instance d'une classe ou d'une structure, non Shared (la procédure est un membre d'instance)

Au premier appel de la procédure sur une instance spécifique

Lorsque l'instance est libérée pour le garbage collection (GC)

Voir aussi

Tâches

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

Dépannage des types de données

Concepts

Noms 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

Référence

Shared (Visual Basic)

Nothing (Visual Basic)

Static (Visual Basic)

Autres ressources

Références aux éléments déclarés