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
etNext
d’une boucleFor
.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 blocWith
...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
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.Incluez le mot clé Private dans l’instruction
Dim
.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
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.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 String
strMsg
. 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.