Compartir a través de


Declaración implícita y explícita

Actualización: noviembre 2007

De forma predeterminada, el compilador de Visual Basic aplica una declaración explícita, que requiere declarar todas las variables antes de usarlas. Puede eliminar este requisito y permitir la declaración implícita.

Visual Basic proporciona un modificador que controla la declaración explícita. De manera predeterminada, este modificador se establece en On y el compilador fuerza la declaración explícita. Si establece este modificador en Off, puede utilizar variables sin declararlas.

Modificador de declaración explícita. Puede establecer el modificador de declaración explícita en On o Off de cualquiera de estas formas:

  • Establecer una propiedad de proyecto adecuada en el entorno de desarrollo integrado (IDE). Haga clic en Propiedades de <nombre de proyecto> en el menú Proyecto y, a continuación, haga clic en la ficha Compilación. Puede establecer los valores predeterminados para Option Explicit, Option Strict y Option Compare.

  • Especificar la opción del compilador de línea de comandos /optionexplicit.

  • Incluir Instrucción Option Explicit (Visual Basic) al principio de su código.

Si utiliza la instrucción OptionExplicit, esta configuración reemplaza las configuraciones tanto de la propiedad de proyecto como de la opción de compilador, pero únicamente en el archivo de código fuente en el cual aparece.

Ventaja de rendimiento. Establecer OptionExplicit en On tiene la ventaja de forzar que la inferencia de tipo se realice en tiempo de compilación en lugar de en tiempo de ejecución. Esto mejora el rendimiento.

Declaración implícita

Si establece OptionExplicit en Off, puede declarar de forma implícita una variable utilizándola simplemente en el código. El compilador asigna Object (Tipo de datos) a todas las variables declaradas de forma implícita. Sin embargo, la aplicación es más eficiente si se declaran todas las variables explícitamente y con un tipo de datos específico. Esto reduce la incidencia de los errores de conflicto de nombres y de los errores de escritura. También permite al compilador detectar errores potenciales en tiempo de ejecución, como asignar un tipo Integer a un tipo Short.

Errores potenciales

Nuevas variables imprevistas

Puede escribir un procedimiento en el que no declara una variable local. Esto se ilustra en el siguiente ejemplo:

Function safeSqrt(num)
' Make sure num is positive for square root.
    tempVal = Math.Abs(num)
    Return Math.Sqrt(tempVal)
End Function

Visual Basic crea automáticamente tempVal como una variable local que puede usar como si la hubiera declarado de forma explícita. Aunque esto resulta cómodo, puede inducir a errores difíciles de detectar en el código si se escribe incorrectamente el nombre de una variable. Supongamos que ha escrito el procedimiento del ejemplo anterior tal como sigue:

Function safeSqrt(num)
' Make sure num is positive for square root.
    tempVal = Math.Abs(num)
    Return Math.Sqrt(temVal)
End Function

A primera vista, el código parece idéntico. Pero como la variable tempVal se ha escrito incorrectamente, al igual que el argumento de Sqrt, el compilador crea una variable local adicional denominada temVal, a la que nunca se asigna un valor y la función devuelve siempre cero.

Referencia de elemento existente imprevisto

Cuando Visual Basic encuentra un nuevo nombre, no puede determinar si quiso declarar una nueva variable implícitamente o si escribió mal un nombre de variable existente. Por consiguiente, intenta crear una nueva variable con ese nombre. Puede haber una variable o un elemento de programación ya definido con ese nombre y su código utilizaría esa definición involuntariamente.

Puede evitar los problemas derivados de las variables mal escritas mediante el uso de una declaración explícita.

Declaración explícita

En el ejemplo anterior, si la declaración explícita hubiera estado vigente para el archivo de código fuente que contenía el procedimiento safeSqrt, Visual Basic habría reconocido tempVal y temVal como variables no declaradas, y habría generado errores relativos a ambas. Como resultado, debería declararse de forma explícita tempVal: Esto se ilustra en el siguiente ejemplo:

Function safeSqrt(ByVal num As Double) As Double
' Make sure num is positive for square root.
    Dim tempVal As Double = Math.Abs(num)
    Return Math.Sqrt(temVal)
End Function

Con este código revisado, se entendería inmediatamente el problema porque Visual Basic mostraría un mensaje de error para la variable temVal escrita de forma incorrecta. Es recomendable utilizar la declaración explícita con la totalidad del código, porque ayuda a detectar este tipo de errores.

Nota:

La instrucción OptionExplicit opera sobre una base archivo por archivo. Debe estar al principio de cada archivo de código fuente en el cual desee controlar la imposición de una declaración de variable explícita.

Vea también

Tareas

Cómo: Modificar las propiedades y los valores de configuración del proyecto

Conceptos

Programación sin tipos en Visual Basic

Comprobar tipos en Visual Basic

Object como tipo de datos universal

Uso eficiente de tipos de datos

Variables en Visual Basic

Convenciones de nomenclatura de Visual Basic

Referencia

Resumen de tipos de datos (Visual Basic)

Funciones de conversión de tipos