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.
jueves, 27 de agosto de 2015
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.