En mi post anterior sobre novedades de C# 3.0 hablé sobre los tipos anónimos. En el ejemplo de código use una palabra clave nueva, 'var', cuyo significado dejé para hoy. Algún lector asiduo se adelantó ademas preguntando algo sobre cómo se determinaban los tipos de las propiedades de las clases anónimas así definidas.
La nueva palabra clave 'var' sirve para declarar variables locales sin indicar su tipo. Así podemos escribir, por ejemplo:
var i = 1;
var nombre = "JM";
var personajillo = new PersonaHumana("Perico", "De los palotes", 42)
Es muy parecido a la sintaxis de JavaScript, pero con una importante diferencia: el hecho de que no indiquemos el tipo no quiere decir que no lo tengan, ya que C# sigue siendo un lenguaje fuertemente tipado. Lo hace var no es declarar una variable sin tipo, sino que declara la variable con el tipo adecuado para contener el dato indicado, siendo dicho tipo deducido a partir del valor.
Así en el código anterior 'i' será un entero, 'nombre' será una cadena y 'personajillo' será una referencia a un objeto de la clase indicada.
En JavaScript y otros lenguajes sin tipado fuerte puedes cambiar alegremente el tipo de dato almacenado por una variables, pasando de contener un entero a una cadena, por ejemplo. En C#, gracias a los dioses, no es así.
Esta característica se ha introducido para dar soporte a los tipos anónimos que expliqué en el anterio post, y por lo tanto como expliqué allí, realmente para dar soporte a LINQ.
Por mi parte recomendaría no usarlos en situaciones normales porque el código queda menos claro y pueden dar lugar a confusiones, si bien no tengo otras razone de peso como por ejemplo que bajen el rendimiento o algo así. De hecho es lo miso que declarar el tipo de verdad, pero desde mi punto de vista dejas más cabos sueltos que si lo haces explícito.