sábado, 5 de marzo de 2011

Ámbito de la variable

El ámbito de una variable está formado por todo código que puede hacer referencia a la variable sin tener que calificar su nombre. El ámbito de una variable está determinado por la ubicación en la que se haya declarado la variable. El código de una región determinada puede utilizar las variables definidas en dicha región sin necesidad de especificar los nombres de las variables.

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