Comment : contrôler la portée d'une variable (Visual Basic)

Normalement, une variable est dans l’étendueou est visible pour référence, dans toute la région dans laquelle vous la déclarez. Dans certains cas, le niveau d’accès de la variable peut influencer son étendue.

Pour plus d'informations, consultez Scope in Visual Basic.

Étendue au niveau du bloc ou de la procédure

Rendre une variable visible uniquement dans un bloc

  • Placez l’instruction Dim pour la variable entre les instructions de déclaration de lancement et de fin de ce bloc, par exemple entre les instructions For et Next d’une boucle For.

    Vous pouvez faire référence à la variable uniquement à partir du bloc.

Rendre une variable visible uniquement dans une procédure

  • Placez l’instruction Dim pour la variable à l’intérieur de la procédure, mais en dehors de tout bloc (tel qu’un bloc With...End With).

    Vous pouvez faire référence à la variable uniquement à partir de la procédure, y compris à l’intérieur de n’importe quel bloc contenu dans la procédure.

Étendue au niveau du module ou de l’espace de noms

Pour des raisons pratiques, le seul terme niveau de module s’applique tout autant aux modules qu’aux classes et aux structures. Le niveau d’accès d’une variable de niveau module détermine son étendue. L’espace de noms qui contient le module, la classe ou la structure influence également l’étendue.

Rendre une variable visible dans un module, une classe ou une structure

  1. Placez l’instruction Dim pour la variable à l’intérieur du module, de la classe ou de la structure, mais en dehors de toute procédure.

  2. Incluez le mot clé Private dans l’instruction Dim.

  3. Vous pouvez faire référence à la variable n’importe où dans le module, la classe ou la structure, mais pas à partir de l’extérieur.

Rendre une variable visible dans un espace de noms

  1. Placez l’instruction Dim pour la variable à l’intérieur du module, de la classe ou de la structure, mais en dehors de toute procédure.

  2. Incluez le mot clé Friend ou Public dans l’instruction Dim.

  3. Vous pouvez faire référence à la variable à partir de n’importe où dans l’espace de noms contenant le module, la classe ou la structure.

Exemple

L’exemple suivant déclare une variable au niveau du module et limite sa visibilité au code dans le module.

Module demonstrateScope  
    Private strMsg As String  
    Sub initializePrivateVariable()  
        strMsg = "This variable cannot be used outside this module."  
    End Sub  
    Sub usePrivateVariable()  
        MsgBox(strMsg)  
    End Sub  
End Module  

Dans l’exemple précédent, toutes les procédures définies dans le module demonstrateScope peuvent faire référence à la variable StringstrMsg. Lorsque la procédure usePrivateVariable est appelée, elle affiche le contenu de la variable strMsg de chaîne dans une boîte de dialogue.

Avec la modification suivante apportée à l’exemple précédent, la variable de chaîne strMsg peut être référencée par le code n’importe où dans l’espace de noms de sa déclaration.

Public strMsg As String  

Programmation fiable

Plus l’étendue d’une variable est réduite, moins vous avez d’opportunités de faire référence accidentellement à celle-ci à la place d’une autre variable portant le même nom. Vous pouvez également réduire les problèmes de correspondance de référence.

Sécurité du .NET Framework

Plus l’étendue d’une variable est réduite, plus le code malveillant risque de l’utiliser de manière incorrecte.

Voir aussi