El lanzamiento del .NET Framework 3.5 trae consigo una nueva versión del CLR asi como una nueva versión de VB.NET (9.0 o 2008) y C# (3.0) (éstos son los lenguajes que trato en éste blog).

Una de las nuevas características que incorporan éstos lenguajes es la inferencia de tipos. Para entender este nuevo concepto, creo que es mejor empezar con un ejemplo práctico:

VB.NET:

Partamos del siguiente código

Dim i=new ArrayList()     –> Notar que se ha omitido la especificación del tipo (As XXXX)

Uno espera que el comportamiento del compilador sea tratar la variable i como un
ArrayList, pero si comprobamos con IntelliSense la variable veremos que el
compilador la trata como un Object. La inferencia de datos soluciona este problema. 
Si activamos la opción  Option Strict On, el compilador no dará un error en la sentencia anterior, puesto que no hemos indicado el tipo de la variable declarada, i los tipos no son convertibles de forma implícita.

Es muy recomendable programar con la opción Option Strict activada puesto que nos impedirá generar este tipo de código.

Si activamos la opción Option Infer On podremos introducir el siguiente código:

Option Infer On
Dim i = new ArrayList()

El compilador, ahora es capaz de inferir el tipo del objeto i, reconociendo a éste como un objeto del tipo ArrayList. 

Más ejemplos de Inferencia de tipos:

 

Option Strict y Option Infer = Off

Option Strict y Option Infer = Off (El compilador trata la variable i como Object, no como ArrayList)

 

 

Option Strict On (no nos permite este tipo de declaraciones, ya que los tipos no se pueden convertir de forma implicita)

Option Strict On (no nos permite este tipo de declaraciones, ya que los tipos no se pueden convertir de forma implícita)

 

 

Con Option Strict y Option Infer On, la inferencia de tipos funciona correctamente

Con Option Strict y Option Infer On, la inferencia de tipos funciona correctamente

Para activar las opciones Option Strict y/o Option Infer (o bien deshabilitarlas) para todo nuestro proyecto, podemos hacerlo accediendo a las propiedades del proyecto y modificándolo en la pestaña de Compilación:

 

Activando las Options en las propiedades del proyecto, evitaremos tener que declararlas en cada uno de nuestros archivos fuente

Activando las Options en las propiedades del proyecto, evitaremos tener que declararlas en cada uno de nuestros archivos fuente

 

C#:

La inferencia de tipos en C# se puede implementar haciendo uso de la palabra reservada var. La sintaxis para declarar una variable haciendo uso de la inferencia de tipos seria así:

var i=new ArrayList();

Ahora la variable i es del tipo ArrayList, pese a que en ningún momento hemos declarado su tipo, tal y como se demuestra en la siguiente imagen:

 

 

Y eso es todo en cuanto a la inferencia de tipos. Espero que os sea útil en vuestro trabajo diario!😛