Cómo: Controlar el ámbito de una variable (Visual Basic)
Normalmente, una variable está en ámbito, o es visible para referencia, en toda la región en la que se declara. En algunos casos, el nivel de acceso de la variable puede influir en su ámbito.
Para obtener más información, consulta Scope in Visual Basic.
Ámbito en el nivel de bloque o procedimiento
Para que una variable solo sea visible dentro de un bloque
Coloque la instrucción Dim de la variable entre las instrucciones de declaración de inicio y finalización de ese bloque, por ejemplo, entre las instrucciones
For
yNext
de un bucleFor
.Solo puede hacer referencia a la variable desde dentro del bloque.
Para que una variable solo sea visible dentro de un procedimiento
Coloque la instrucción
Dim
para la variable dentro del procedimiento, pero fuera de cualquier bloque (por ejemplo, un bloqueWith
...End With
).Solo puede hacer referencia a la variable desde dentro del procedimiento, incluso dentro de cualquier bloque contenido en el procedimiento.
Ámbito en el nivel de módulo o espacio de nombres
Por comodidad, el término nivel de módulo se aplica por igual a módulos, clases y estructuras. El nivel de acceso de una variable en el nivel de módulo determina su ámbito. El espacio de nombres que contiene el módulo, la clase o la estructura también influye en el ámbito.
Para que una variable sea visible en un módulo, clase o estructura
Coloque la instrucción
Dim
de la variable dentro del módulo, clase o estructura, pero fuera de cualquier procedimiento.Incluya la palabra clave Private en la instrucción
Dim
.Puede hacer referencia a la variable desde cualquier lugar dentro del módulo, la clase o la estructura, pero no desde fuera.
Para que una variable sea visible en un espacio de nombres
Coloque la instrucción
Dim
de la variable dentro del módulo, clase o estructura, pero fuera de cualquier procedimiento.Incluya la palabra clave Friend o Public en la instrucción
Dim
.Puede hacer referencia a la variable desde cualquier lugar del espacio de nombres que contenga el módulo, clase o estructura.
Ejemplo
En el ejemplo siguiente se declara una variable en el nivel de módulo y se limita su visibilidad al código del módulo.
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
En el ejemplo anterior, todos los procedimientos definidos en el módulo demonstrateScope
pueden hacer referencia a la variable de String
strMsg
. Cuando se llama al procedimiento usePrivateVariable
, muestra el contenido de la variable de cadena strMsg
en un cuadro de diálogo.
Con la siguiente modificación del ejemplo anterior, el código puede hacer referencia a la variable de cadena strMsg
en cualquier parte del espacio de nombres de su declaración.
Public strMsg As String
Programación sólida
Cuanto menor sea el ámbito de una variable, menos probabilidades tendrá de hacer referencia accidentalmente a ella en lugar de a otra variable con el mismo nombre. También puede minimizar los problemas de coincidencia de referencias.
Seguridad de .NET Framework
Cuanto menor sea el ámbito de una variable, menor será la probabilidad de que un código malintencionado pueda hacer un uso incorrecto de ella.