domingo, 17 de agosto de 2014

IEnumerable, Entendiendo las secuencias ...


La Iterface IEnumerable<T>, es una de las partes más importantes de todo el mundo de LinQ, ya que todos sus métodos extensores están realizados sobre este tipo y prácticamente todos ellos devuelven objetos de este mismo tipo.

 Podemos entenderla como la mínima expresión de una colección, y prácticamente la mayoría de las colecciones del Framework la implementan (List<T>, Observable<T>, Arrays, etc). En esta parte tenemos que indicar que hay una minoría de ellas que no lo hacen y que principalmente están formadas por colecciones especiales de controles gráficos, tales como el UIElementCollection que es la colección en la que se guardan los objetos contenidos dentro de un Grid de WPF. Cuando estemos acostumbrados a trabajar con LinQ y nos encontremos con una de estas colecciones, lo primero que pensaremos es que o nos falta algún using, o el intellisense o el propio Visual Studio nos están jugando una mala pasada. Un poco más adelante dentro del curso aprenderemos a convertirlas fácilmente en colecciones compatibles con la tecnología.



martes, 8 de julio de 2014

Métodos de Extensión - Extensions Methods




Los métodos de extensión, nos ofrecen la posibilidad de poder extender las clases de terceros, de poder añadir métodos a clases de las que no disponemos del código fuente y nos es de utilidad añadirles nuevas funcionalidades.


Esta característica se añadió en la versión 3.0 del .Net Framework, y es masivamente utilizada dentro de las librerías de LinQ, especialmente para el tipo IEnumerable<T>, que veremos con posterioridad en la siguiente entrada.



martes, 24 de junio de 2014

Expresiones Lambda






Vamos con la evolución de los métodos anónimos, para muchos las muy polémicas y comprometidas Expresiones Lambda.
Aparecieron en la versión 3.0 del Framework y vinieron a ser el apoyo ideal para nuestro bien amado LinQ. Las Expresiones Lambda tienen la capacidad de manejar eventos ‘inline’ asignando bloques de código a delegados o eventos, al igual que lo hacían nuestros métodos anónimos, pero de una forma más reducida y concisa, ‘echando mano’ de la inferencia de tipos.

Intentaremos desmitificarlas haciendo una comparativa con los métodos anónimos y desglosando cada una de sus partes y sus formas de uso.

martes, 29 de abril de 2014

Métodos, Delegados Anónimos



Lo primero para ver este apartado es explicar que podemos encontrárnoslo como Métodos Anónimos o Delegados Anónimos, aunque también podemos referirnos a ellos como Funciones Anónimas, o Funciones o Métodos ‘Inline’. Aparecieron en la versión 2.0 del Framework y vinieron a cubrir la incapacidad de poder definir un método dentro de cualquier porción de código, sin tener que echar mano de la forma clásica [public/private void/int/string/ … nombreMétodo (parámetros)].


Esto como veremos en la siguiente entrega fue superado por creces con la introducción de la Expressiones Lambda en la versión del Framework 3.0 y con el concepto de Inferencia de Tipos, pero como veremos en esta hay una excepción que poseen los delegados anónimos que no pueden realizar las Expressiones Lambda.

martes, 22 de abril de 2014

Eventos - events




Los eventos son un tipo definido dentro del CLR que nos permite notificar a otros objetos algo que está sucediendo en el interior de nuestra clase. Para que estos objetos puedan ser informados, antes tienen que suscribirse al evento.


Desde la aparición de Visual Basic 6, normalmente achacamos los eventos a controles tales como Buttons, Combobox, DataGrids, etc., pero su aplicación y su enfoque va mucho más allá, y su uso en clases que no forman parte de la GUI, es tan normal, tan común y tan útil como en éstas.

El concepto de evento está completamente ligado al de delegado, ya que se nutre de estos para guardar las acciones que se suscriben al mismo, y así añadir su restricción de firma para estas acciones, de manera que solo se puedan suscribir a estos eventos los métodos que cumplan con la firma de su delegado.