Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

viernes, 21 de marzo de 2008

Tipos anónimos

Los tipos anónimos constituyen otra de las novedades de C# 3.0, estando fuertemente ligados a la aparición de LINQ. Realmente, los tipos anónimos son tipos class dotados de propiedades públicas de sólo lectura (por ello se les conoce también como tipos anónimos inmutables), no permitiendo ningún otro miembro de clase, como pudieran ser métodos o eventos.


Estos tipos anónimos, que son declarados mediante la palabra reservada ‘var', se inicializan justo en el momento de su creación, ya que el CLR deberá inferir, a partir de esta inicialización, la clase que será asociada a dicho tipo, y usada durante la ejecución del programa. Al ser un tipo class, la inicialización vendrá de la mano de un ‘new', ya que deberemos construir el objeto perteneciente a dicha clase. Como ya apuntábamos, los tipos anónimos tienen su máximo poder de expresión junto a LINQ, permitiéndonos ahorrar código y hacer más claro el que escribamos.



Tipos anónimos


En el código precedente, podemos observar que tras declarar un objeto ‘mitipo' mediante un tipo anónimo, Visual Studio nos permite trabajar con él como si un objeto instancia de cualquier otra clase se tratara incluyendo, mediante reflexión, acceso a las propiedades del objeto, y mostrando información sobre el mismo en el IDE, mediante Intellisense.


Como vemos, el uso de los tipos anónimos nos facilita el desarrollo, evitando la declaración explícita y formal de la clase correspondiente al tipo. La inicialización conjunta a la declaración es necesaria ya que el uso de ‘var' producirá un objeto fuertemente tipado.


Por último, adaptamos uno de los ejemplos del libro C# 3.0 in a Nutshell incorporados a LINQPad para recuperar los valores de la tabla Productos de la base de datos Northwind, incorporada como ejemplo en los productos SQL Server, para mostrar la potencia de los tipos anónimos. En esta tabla se almacena información sobre los productos de nuestra empresa, como su nombre, categoría o precio. Vamos a recuperar en concreto estos tres campos para los pedidos efectuados desde España, y el resultado lo almacenaremos en un objeto denominado ‘spanishProducts'. El código quedaría como:


[csharp]var spanishProducts = from p in Products
let spanishOrders = p.OrderDetails.Where(o => o.Order.ShipCountry == "Spain")
where spanishOrders.Any()
orderby p.ProductName
select new
{
p.ProductName,
p.Category.CategoryName,
TotalValue = spanishOrders.Sum(o => o.UnitPrice * o.Quantity)
};[/csharp]

No hay comentarios:

Publicar un comentario