miércoles, septiembre 21, 2005

Tipos inferidos

C# 3.0 implementa inferencia de tipos. Esto es, la posibilidad que un tipo sea resuelto en funcion del contenido que lo inicializa.

Asi, en vez de escribir:

int a = 5;
string saludo = "Hola !";

podemos escribir:

var a = 5;
var saludo = "Hola !";

con los mismos resultados.

El ejemplo del Hands-On Lab C# 3.0 Language Enhancements muestra como utilizar dicha caracteristica:


class Program
{
static void Main(string[] args)
{
InitAndPrint();
Console.ReadLine();
}

static void InitAndPrint()
{
var i = 5;
var s = "Hello";
var d = 1.0;
var numbers = new int[] {1,2,3};
Console.WriteLine("i: " + i);
Console.WriteLine("s: " + s);
Console.WriteLine("d: " + d);
Console.WriteLine("numbers: ");
foreach(int n in numbers) Console.WriteLine(n);
}
}


El tipo var indica al compilador que infiera el tipo de las variables desde el tipo estatico de la expresion utilizada para inicializar la variable. Esta caracteristica toma su real importancia cuando tratamos con tipos anonimos

object UnTipoAnonimo = new {nombre="Gabriel", Apellido="Bulfon", edad=35};

asi, sera mas conveniente:

var UnTipoAnonimo = new {nombre="Gabriel", Apellido="Bulfon", edad=35};

Para poder utilizar el compilador de C# 3.0 es necesario descargarse el paquete C# LINQ Tech Preview de la pagina http://msdn.microsoft.com/netframework/future/linq/