El ámbito de un elemento declarado es el conjunto de todo el código que puede hacer referencia a él sin calificar su nombre o marcarlo como disponible mediante “Imports (Instrucción)”. Un elemento puede tener uno de los niveles de ámbito siguientes:
- Ámbito de bloque
- Ámbito de procedimiento
- Ámbito de módulo
- Ámbito de espacio de nombres
Estos niveles de ámbito progresan desde el más restringido (bloque) al más amplio (espacio de nombres), donde ámbito más restringido significa el conjunto de código más pequeño que puede hacer referencia al elemento sin calificación.
Niveles de ámbito
Un elemento de programación está disponible en toda la región en la que se declara. Todo el código de la misma región puede hacer referencia al elemento sin calificar su nombre.
Ámbito de bloque
Un bloque es un conjunto de instrucciones incluido dentro de las instrucciones de declaración de inicio y fin, como lo siguiente:
- Do y Loop
- For [Each] y Next
- If y End If
- Select y End Select
- SyncLock y End SyncLock
- Try y End Try
- While y End While
- With y End With
Si declara una variable dentro de un bloque, sólo puede utilizarla dentro de ese bloque. En el ejemplo siguiente, el ámbito de la variable de entero cube es el bloque entre “If” y “End If”, y las referencias a cube dejan de ser posibles cuando termina la ejecución del bloque.
If n<1291 cube="n^3">
Ámbito de procedimiento
Un elemento declarado en un procedimiento no está disponible fuera de él. Solamente el procedimiento que contiene su declaración puede utilizarlo. Las variables en este nivel también se denominan variables locales. Se declaran con Instrucción Dim (Visual Basic), con o sin la palabra clave Static (Visual Basic).
Los ámbitos de procedimiento y de bloque están estrechamente relacionados. Si se declara una variable dentro de un procedimiento, pero fuera de un bloque dentro del procedimiento, puede considerarse que la variable tiene ámbito de bloque, donde el bloque es el procedimiento completo.
Ámbito de módulo
El término nivel de módulo se aplica por igual a módulos, clases y estructuras. Puede declarar elementos a este nivel si sitúa la instrucción de declaración fuera de cualquier procedimiento o bloque pero dentro del módulo, clase o estructura.
Cuando se incluye una declaración en el nivel de módulo, el nivel de acceso seleccionado determina el ámbito. El espacio de nombres que contiene el módulo, la clase o la estructura también afecta al ámbito.
Los elementos para los que se declara el nivel de acceso Private (Visual Basic) están disponibles para todos los procedimientos del módulo, pero no para el código de otros módulos. La instrucción” Dim” en el nivel de módulo toma “Private” como valor predeterminado si no utiliza ninguna palabra nivel de acceso. No obstante, el ámbito y el nivel de acceso serán más patentes si utiliza la palabra clave “Private” en la instrucción “Dim”.
En el ejemplo, todos los procedimientos definidos en el módulo pueden hacer referencia a la variable de cadena strMsg. Cuando se llama al segundo procedimiento, muestra el contenido de la variable de cadena strMsg en un cuadro de diálogo:
Private strMsg As String
Sub initializePrivateVariable ()
strMsg=”This variable cannot be used out side this module.”
End Sub
Sub usePrivateVariable ()
MsgBox (strMsg)
End Sub
Ámbito de espacio de nombres
Si declara un elemento en el nivel de módulo mediante la palabra clave “Friend (Visual Basic)” o “Public (Visual Basic)”, dicho elemento quedará disponible para todos los procedimientos del espacio de nombres en los que se declare. La siguiente modificación del ejemplo anterior permite que el código haga referencia a la variable de cadena strMsg en cualquier parte del espacio de nombres de su declaración.
Public strMsg As String
El ámbito de espacio de nombres incluye espacios de nombres anidados. Un elemento disponible de un espacio de nombres también está disponible en cualquier espacio de nombres anidado en su interior.
Si un proyecto no contiene “Namespace (Instrucción)”, todo lo que incluya el proyecto estará en el mismo espacio de nombres. En este caso, el ámbito de espacio de nombres se puede considerar como el ámbito del proyecto. Los elementos “Public” de un módulo, clase o estructura también están disponibles para cualquier proyecto que haga referencia a sus proyectos.
No hay comentarios:
Publicar un comentario