Visual Basic .NET Language
Opcion Inferir
Buscar..
¿Qué es?
Habilita el uso de inferencia de tipo local en la declaración de variables.
¿Qué es la inferencia de tipos?
Puede declarar variables locales sin indicar explícitamente un tipo de datos. El compilador infiere el tipo de datos de una variable del tipo de su expresión de inicialización.
Opción Inferir En :
Dim aString = "1234" '--> Will be treated as String by the compiler
Dim aNumber = 4711 '--> Will be treated as Integer by the compiler
Declaración de tipo explícita vs.
'State a type explicitly
Dim aString as String = "1234"
Dim aNumber as Integer = 4711
Opción Inferir Off:
El comportamiento del compilador con Option Infer Off
depende de la configuración de Option Strict
que ya está documentada aquí .
Opción Inferir desactivada - Opción estricta desactivada
Todas las variables sin declaraciones explícitas de tipo se declaran comoObject
.Dim aString = "1234" '--> Will be treated as Object by the compiler
Opción Inferir desactivada - Opción estricta activada
El compilador no le permitirá declarar una variable sin un tipo explícito.'Dim aString = "1234" '--> Will not compile due to missing type in declaration
Cómo habilitarlo / deshabilitarlo
Nivel de documento
Está activado de forma predeterminada, pero puede configurarlo colocando Option Infer On|Off
en la parte superior del archivo de código. La opción se aplicará a todo el documento.
Nivel de proyecto
Puede activarlo / desactivarlo a través del menú en Visual Studio:
Proyecto> Propiedades de [Proyecto]> Ficha Compilar> Opción infer
Seleccione On|Off
en el menú desplegable. La opción se aplicará a todo el documento.
Todos los nuevos proyectos
Puede activarlo de forma predeterminada para todos los proyectos nuevos seleccionando:
Herramientas> Opciones> Proyectos y soluciones> Valores predeterminados de VB> Opción Inferir
Seleccione On|Off
en el menú desplegable.
Cuándo usar inferencia de tipo
Básicamente puedes usar la inferencia de tipos siempre que sea posible.
Sin embargo, tenga cuidado al combinar Option Infer Off
y Option Strict Off
, ya que esto puede llevar a un comportamiento de tiempo de ejecución no deseado:
Dim someVar = 5
someVar.GetType.ToString() '--> System.Int32
someVar = "abc"
someVar.GetType.ToString() '--> System.String
Tipo Anónimo
Los tipos anónimos solo se pueden declarar con Option Infer On
.
Se usan a menudo cuando se trata de LINQ :
Dim countryCodes = New List(Of String)
countryCodes.Add("en-US")
countryCodes.Add("en-GB")
countryCodes.Add("de-DE")
countryCodes.Add("de-AT")
Dim q = From code In countryCodes
Let split = code.Split("-"c)
Select New With {.Language = split(0), .Country = split(1)}
Opción Inferir Off
El compilador lanzará un error (con laOption Strict On
)
o consideraráq
como tipo deobject
(con laOption Strict Off
).
Ambos casos producirán el resultado de que no puede utilizar el tipo anónimo.
Dobles / Decimales
Las variables numéricas con posiciones decimales se deducirán como Double
por defecto:
Dim aNumber = 44.11 '--> Will be treated as type `Double` by the compiler
Si se desea otro tipo como Decimal
el valor que inicializó la variable debe marcarse:
Dim mDecimal = 47.11D '--> Will be treated as type `Decimal` by the compiler