jueves, 27 de agosto de 2015

Novedades C# 6.0 (Parte 3)






Vamos a finalizar esta serie de posts de novedades de C# 6.0, entrando en profundidad dentro de los apartados de Name of Expressions, la utilización de Await en los bloques catch y finally, y continuando con las excepciones, acabaremos con una novedad adoptada de Visual Basic, que no es otra que los bloques catchs condicionales o filtrado de excepciones.




domingo, 16 de agosto de 2015

Novedades C# 6.0 (Parte 2)




Esta segunda entrega de novedades de C# 6.0, la vamos a utilizar por completo para explicar el Null Conditional Operator (.?) o Evaluador de null en código. Parte de este operador, ya era un viejo conocido, utilizado en versiones anteriores, para realizar operaciones ternarias y en conjunción doble para tratamientos de valores nulos en tipos por referencia y en tipos nullables. En esta nueva versión, toma de nuevo protagonismo al vincularse con el punto (.) y nos intenta hacer la vida un poquito más fácil.


Vamos a ver de qué va.






martes, 11 de agosto de 2015

Novedades C# 6.0 (parte 1)




Vamos a hacer una pequeña pausa dentro de nuestro curso de LinQ, y aprovechando que la nueva versión de Visual Studio, del Framework y de C#, ya están en la calle, daremos un repaso a las nuevas características que nos trae el lenguaje del ‘C Sostenido’.

De primeras podemos decir que los cambios introducidos dentro de la nueva versión del lenguaje nativo de la plataforma .Net, no son, ni demasiado bestias, ni demasiado amplios, pero contribuyen y favorecen a una mejor lectura, compresión y organización de nuestro código.


Para intentar hacer que los posts, sean lo más didácticos posibles, pondré cada uno de los ejemplos de manera inicial, como se hacían antes (versión 5.0 de C#) y como lo podremos hacer ahora (versión 6.0 de C#) para poder ilustrarnos con las diferencias.



lunes, 15 de junio de 2015

Set Operators, Concat, Union, Intersect, Except y Distinct




Seguimos con los operadores de LinQ, ahora le toca el turno a los ‘Set Operators’ u Operadores de Conjunto.

Los operadores de conjunto, nos permiten realizar actuaciones sobre dos secuencias (IEnumerable<T>) del mismo tipo de datos, dando como resultado una colección de este mismo tipo. Todas y cada una de sus ejecuciones se realizan de forma diferida o perezosa.

En caso de que alguna de estas colecciones sea null en el momento de realizar la llamada, el compilador lanzará un ArgumentNullException.

Vamos a detallar cada uno de sus operadores, para intentar que todo esto quede un poco más claro, haré un par de ejemplos para cada operador, uno con datos simples, colecciones de tipo int, y otro con una de las clases más utilizada en nuestros ejemplos y que tiene su definición en los post anteriores, el tipo Automovil. El objetivo  es comprender lo imprescindible, que es el uso de las sobrecargas que admiten un comparador de tipo IEQualityComparer<T> para los tipos compuestos, en el que indicaremos al compilador como queremos que se diferencien 2 objetos de este tipo.


Como en todas las reglas, hay una excepción y esta no iba a ser menos. El operador Distinct, cambiará, para utilizar una única colección en decremento de dos, pero eso lo contaremos un poquito más adelante.



domingo, 24 de mayo de 2015

Operadores de Elemento, First, Single, LastOrDefault ... etc.




Los operadores de elemento son todos aquellos métodos extensores dentro de la librería de LinQ, que devuelven una única pieza o el valor por defecto de su tipo a partir de una secuencia de datos IEnumerable<TSource>.


Estos operadores suelen estar compuestos por su definición simple y una variación ‘OrDefault’. Esta variación ‘OrDefault’, viene a significar, que en caso de no cumplirse el criterio de búsqueda, el operador no lanzará ninguna excepción y devolverá el valor por defecto del tipo al que pertenece la secuencia. Este valor por defecto es el que devolvería el operador default(T), que ya estudiamos con anterioridad.