Historia de la pregunta
La opción Option Strict apareció en Visual Basic .NET para aumentar la seguridad de tipos. En versiones anteriores del lenguaje (VB6) ocurrían conversiones de tipos implícitas, lo que llevaba a comportamientos inesperados del programa y errores difíciles de detectar. Al activar Strict, el comportamiento se vuelve más explícito y estrictamente tipificado.
Problema
La conversión implícita de tipos (por ejemplo, asignar una cadena a una variable numérica o devolver diferentes tipos desde una función) conduce a errores en tiempo de ejecución. Los proyectos con Option Strict Off con frecuencia son fuente de errores difíciles de detectar.
Solución
Con Option Strict On no se permiten conversiones de tipos implícitas, todas las declaraciones de variables, parámetros y tipos de retorno de funciones deben ser explícitamente definidos. Esto previene toda una clase de errores ya en la etapa de compilación y contribuye a la alta calidad del código.
Ejemplo de código:
Option Strict On Dim x As Integer x = "123" ' Error de compilación: se requiere conversión explícita x = CInt("123") ' OK Function GetNumber(ByVal input As String) As Integer Return input ' Error de compilación End Function
Características clave:
¿Para qué sirve Option Strict Off, si con Strict On es más cómodo y seguro?
Option Strict Off se utiliza para mantener código antiguo que ya contiene muchas conversiones implícitas (por ejemplo, migración desde VB6). En nuevos proyectos se recomienda activar Strict para un código más confiable y seguro.
¿Se puede recuperar la estricta elección de tipos a nivel de archivo si en el proyecto por defecto está Off?
Sí, se puede añadir la directiva Option Strict On al principio de un módulo o archivo separado, y la verificación estricta de tipos se aplicará solo a ese archivo.
' Al principio del archivo: Option Strict On
¿Obstruye Strict el uso de late binding a través de Object?
Sí, con Option Strict On no se pueden invocar miembros de objetos no reconocidos durante la compilación (late binding). Es necesario convertir los objetos a un tipo conocido a través de interfaces o utilizar trabajo dinámico solo con Off.
El programador no activó Option Strict, y al ingresar datos desde un campo de texto TextBox, los valores se asignaron directamente a variables numéricas. Al ingresar datos erróneos, el programa se cerró inesperadamente.
Ventajas:
Desventajas:
El programador activó Option Strict On, todas las conversiones se realizaron de manera explícita a través de TryParse. Los errores se capturaron en la etapa de compilación, las excepciones en tiempo de ejecución son mínimas.
Ventajas:
Desventajas: