Está en la página 1de 5

Restringe las conversiones de tipos de datos implcitas a solo conversiones de

ampliacin, impide el enlace en tiempo de ejecucin y deniega el uso de tipos


implcitos que dan como resultado un tipo Object.
Option Strict { On | Off }

Elementos
Trmino

Definicin

On

Opcional. Habilita la comprobacin Option Strict.

Off

Opcional. Deshabilita la comprobacin Option Strict.

Comentarios
Cuando Option Strict On u Option Strict aparecen en un archivo, las condiciones
siguientes producen un error en tiempo de compilacin:
Conversiones de restriccin implcitas
Enlace en tiempo de ejecucin
Tipo implcito que da como resultado un tipo Object

Nota

En la configuracin de advertencias que se puede establecer en Pgina Compilacin, Diseador de proyectos


que corresponden a las tres condiciones que producen un error en tiempo de compilacin. Para obtener infor
estas opciones de configuracin, vea To set warning configurations in the IDE ms adelante en este tema.
4La instruccin Option Strict Of desactiva la comprobacin de errores y advertencias
para las tres condiciones, aunque la configuracin asociada del IDE especifique activar
estos errores o advertencias. La instruccin de Option Strict On gira el error y la
advertencia que comprueban para ver si hay tres condiciones, aunque los valores
asociados del IDE especifican para desactivar estos errores o advertencias.
Si se utiliza, la instruccin Option Strict tiene que aparecer antes que cualquier otra
instruccin de cdigo en un archivo.
Cuando se Option Strict establecido en On, comprobaciones de Visual Basic que
especifican los tipos de datos para todos los elementos de programacin. Los tipos de
datos pueden especificar explcitamente, o especificar mediante la inferencia de tipo
de variable local. Especificar los tipos de datos para todos los elementos de
programacin se recomienda, por las siguientes razones:
Habilita la compatibilidad con IntelliSense para las variables y los
parmetros. Esto le permite ver las propiedades de las variables y otros
miembros a medida que escribe el cdigo.
Permite que el compilador realice la comprobacin de tipos. La comprobacin de
tipos le ayuda a encontrar instrucciones que pueden producir errores en tiempo

de ejecucin debido a errores de conversin de tipos. Tambin identifica


llamadas a mtodos en objetos que no admiten dichos mtodos.
Acelera la ejecucin de cdigo. Una razn para esto es que si no especifica un
tipo de datos para un elemento de programacin, el compilador de Visual Basic
le asigna el tipo de Object . El cdigo compilado tendra que realizar
conversiones en ambos sentidos entre Object y otros tipos de datos, lo que
reduce el rendimiento.

Errores implcitos de conversin de restriccin


Se producen errores implcitos de la conversin de restriccin cuando hay una
conversin de tipo de datos implcita que es una conversin de restriccin.
Visual Basic puede convertir numerosos tipos de datos en otros distintos. Sin embargo,
se pueden perder datos cuando el valor de un tipo de datos se convierte en un tipo de
datos con menor precisin o menor capacidad. Un error en tiempo de ejecucin se
produce si se produce un error en este tipo de conversin de restriccin. Option
Strict asegura la notificacin del tiempo de compilacin de estas conversiones de
restriccin para que pueda evitarlas. Para obtener ms informacin,
vea Conversiones implcita y explcita (Visual Basic) y Conversiones de
ampliacin y de restriccin (Visual Basic).
Entre las conversiones que pueden producir errores se incluyen las conversiones
implcitas que se producen en las expresiones. Para obtener ms informacin, vea los
temas siguientes:
+ (Operador, Visual Basic)
+= (Operador, Visual Basic)
\ (Operador, Visual Basic)
/= (Operador, Visual Basic)
Char (Tipo de datos, Visual Basic)
Cuando se concatenan cadenas utilizando el & (Operador, Visual Basic), se
considera que todas las conversiones en cadenas son de ampliacin. As, estas
conversiones no generan un error implcito de la conversin de restriccin,
aunque Option Strict est activada.
Cuando se llama a un mtodo que tiene un argumento con un tipo de datos distinto del
parmetro correspondiente, una conversin de restriccin causa un error en tiempo de
compilacin si Option Strict est activada. El error en tiempo de compilacin se
puede evitar mediante una conversin de ampliacin o una conversin explcita.
Los errores implcitos de la conversin de restriccin se suprimen en tiempo de
compilacin para las conversiones de elementos de una coleccin For EachNext a la
variable de control de bucle. Esto ocurre incluso cuando Option Strict est
activada. Para obtener ms informacin y ejemplos, consulte la seccin "Conversiones
de restriccin" en Instruccin For Each...Next (Visual Basic) .

Errores de enlace en tiempo de ejecucin


Un objeto se enlaza en tiempo de ejecucin cuando se asigna a una propiedad o
mtodo de una variable que se declara de tipo Object. Para obtener ms informacin,
vea Enlace en tiempo de compilacin y en tiempo de ejecucin (Visual
Basic).

Errores implcitos del tipo de objeto


Los errores implcitos del tipo de objeto se producen cuando no se puede deducir un
tipo adecuado para una variable declarada, por lo que se deduce un tipoObject. Esto
se produce principalmente cuando se usa una instruccin Dim para declarar una
variable sin usar una clusula As y Option Infer est desactivada.Para obtener ms
informacin, vea Option Infer (instruccin) y Especificacin del lenguaje de
Visual Basic.
Para los parmetros de mtodo, la clusula As es opcional si Option Strict est
desactivada. Sin embargo, si un parmetro utiliza una clusula As, debern utilizarla
todos ellos. Si Option Strict est activado, la clusula As es obligatoria en todas las
definiciones de parmetros.
Si se declara una variable sin usar una clusula As y se establece en Nothing, el tipo
de la variable es Object. En este caso, no se produce ningn error en tiempo de
compilacin si Option Strict y Option Infer estn activadas. Un ejemplo de esto
es Dim something = Nothing.

Valores y tipos de datos predeterminados


La tabla siguiente describe los resultados de varias combinaciones de especificar el
tipo de datos y el inicializador en una Instruccin Dim (Visual Basic).

Tipo de datos
especificado?

Inicializador
especificado?

Ejemplo

Resultado

No

No

Dim qty

Si Option Strict est desactivada (el valor pre


establece en Nothing.
Si Option Strict est activada, se produce un
compilacin.

No

Si

Dim qty = 5

Si Option Infer est activada (el valor predete


tipo de datos del inicializador. Vea Inferencia d
(Visual Basic).
Si Option Infer y Option Strict estn desacti
de datos de Object.
Si Option Infer est desactivada y Option Str
un error en tiempo de compilacin.

Si

No

Dim qty As
Integer

La variable se inicializa con el valor predeterm


datos. Para obtener ms informacin, vea Instr

Si

Si

Dim qty As
Integer = 5

Si el tipo de datos del inicializador no es conv


especificado, se produce un error en tiempo de

Cuando no existe una instruccin Option Strict


Si el cdigo fuente no contiene una instruccin Option Strict, se utiliza el valor
de Option Strict en Pgina Compilacin, Diseador de proyectos (Visual

Basic).La pgina Compilacin incluye valores que proporcionan un control adicional


sobre las condiciones que generan un error.
Si est usando el compilador de la lnea de comandos, puede usar la opcin del
compilador /optionstrict a fin de especificar una configuracin para Option Strict.

Para establecer Option Strict en el IDE


Nota

Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la inter
Studio en las siguientes instrucciones. La edicin de Visual Studio que se tenga y la configuracin que se uti
elementos. Para obtener ms informacin, consulte Personalizar la configuracin de desarrollo en Visual Stu
1. En el Explorador de soluciones, seleccione un proyecto. En el
men Proyecto, haga clic en Propiedades. Para obtener ms informacin,
veaIntroduccin al Diseador de proyectos.
2. En la pestaa Compilar, establezca el valor en el cuadro Option Strict.

Para establecer la configuracin de advertencias


en el IDE
Cuando se utiliza Pgina Compilacin, Diseador de proyectos (Visual
Basic) en lugar de una instruccin Option Strict, tiene un control adicional sobre las
condiciones que generan errores. La seccin Configuracin de advertencias de la
pgina Compilacin tiene valores correspondientes a las tres condiciones que
producen un error en tiempo de compilacin si Option Strict se establece en On. A
continuacin se muestran estos valores:
Conversin implcita
Enlace en tiempo de ejecucin; la llamada podra dar error en tiempo
de ejecucin
Tipo implcito; se asume el objeto
Al establecer Option Strict en On, los tres valores de configuracin de advertencias
se establecen en Error. Al establecer Option Strict en Of, los tres valores se
establecen en None.
Puede cambiar individualmente cada valor de configuracin de advertencias
a Ninguno, Advertencia o Error. Si la tres configuracin de advertencias se
establecen en Error, On aparece en el cuadro Option strict. Si los tres se establecen
en None, Of aparece en este cuadro. Para cualquier otra combinacin de estos
valores, aparece (personalizado).

Para establecer la configuracin predeterminada


Option Strict para nuevos proyectos
Cuando se crea un proyecto, el valor de Option Strict en la pestaa Compilar se
establece en el valor de Option Strict del cuadro de dilogo Opciones.
Para establecer Option Strict en este cuadro de dilogo, en el men Herramientas,
haga clic en Opciones. En el cuadro de dilogo Opciones, expandaProyectos y
soluciones y, a continuacin, haga clic en Valores predeterminados de VB. El valor
predeterminado inicial de Valores predeterminados de VBes Of.

Para establecer Option Strict en la lnea de


comandos
Incluya la opcin del compilador

/optionstrict en el comando vbc.

Ejemplo
En los ejemplos siguientes se muestran errores de compilacin producidos por
conversiones de tipos implcitas que son conversiones de restriccin. Esta categora de
errores corresponde a la condicin Conversin implcita en la pgina Compilacin.
VB

' If Option Strict is on, this implicit narrowing


' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim cyclists As Long = 5
Dim bicycles As Integer = cyclists
'Dim bicycles As Integer = CType(cyclists, Integer)
'Dim bicycles As Integer = CInt(cyclists)
'Dim bicycles As Integer = Convert.ToInt32(cyclists)
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim charVal As Char = "a"
'Dim charVal As Char = "a"c
'Dim charVal As Char = CType("a", Char)
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the string is implicitly
converted
' to a Double, and then is added to the other number.
Dim myAge As Integer = "34" + 6
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the floating-point number
' is implicitly converted to a Long.
Dim num = 123.45 \ 10

También podría gustarte