Informática

10 mejoras del C#6 | Visual Studio 2015

8 junio, 2016
visual-studio-2015

Con la llegada de Visual Studio 2015, una de sus novedades es que viene con C# en su versión 6, y estas son algunas de sus novedades:

  1. Inicializadores de propiedades implementadas automáticamente
  2. Propiedades inicializadas automáticamente de sólo lectura
  3. Empleo de miembros estáticos
  4. Interpolación de cadenas
  5. Métodos con cuerpo de expresión
  6. Iniciadores de índices
  7. Operadores condicionales de NULL
  8. Operador nameof
  9. Filtros de excepción
  10. Await en catch y finally

 

1.- Inicializadores de propiedades implementadas automáticamente

Supongamos este ejemplo:

1

Vemos que tenemos un par de propiedades autoimplementadas, este tipo de propiedades ya lo tenemos desde C# 3.0, para aquellos que no sepáis qué es os explico.

Una propiedad convencional sería algo así:

2

Si no necesitamos tener nada de lógica ni en el get ni en el set, todas estas líneas las podemos escribir en una sola:

public int X { get; set; }

El compilador automáticamente e internamente generará las líneas de arriba cuando vea esta línea, es decir, creará una variable de respaldo con sus métodos get y set y a través de la propiedad accederemos a esa variable de respaldo, a la hora de programar mucho más rápido no crees 😉

Volviendo al ejemplo anterior, a nuestra clase Point, vemos que tenemos las propiedades autoimplementadas X e Y, y tenemos el constructor de la clase:

public Point(int x, int y) { X = x;  Y = y; }

Que asigna valores tanto a X como a Y.

¿Y si quisiéramos asignar las propiedades en la inicialización?

Pues ahora con C# 6, ya podemos, mira estos ejemplos:

        public int X { get; set; } = 6;
        public int Y { get; set; } = 5;

 

2.- Propiedades inicializadas automáticamente de sólo lectura

¿Y si la propiedad fuera de solo lectura?

Pues podemos darle valor igualmente de esta forma:

        public int X { get; } = 6;
        public int Y { get; } = 5;

¿Una mejora interesante no crees?

 

3.- Empleo de miembros estáticos

Ahora a demás podemos importar namespaces estáticos y acceder directamente a sus métodos, veamos el ejemplo de arriba importando System.Math

3

Como podemos observar, en el método Dist, ya no tengo que poner Math.Sqrt(…), puedo poner directamente Sqrt(…), ya que he importado la clase estática con un using static:

using static System.Math;

¿Imaginas ya no tener que escribir constantemente el namespace de los enumerados?

 

4.- Interpolación de cadenas

String.Format es una instrucción realmente potente, pero puede llegar a ser muy voluminosa en función de lo que queramos poner, en nuestro ejemplo anterior tenemos esto:

4

Algo sencillo, tan solo dos parámetros, pero veamos cómo podemos simplificarla:

5

Tan solo tenemos que usar la instrucción $ y poner dentro de las llaves los parámetros que queremos mostrar, bastante más claro, a que sí.

 

5.- Métodos con cuerpo de expresión

Y si ahora ese método aún lo pudiéramos simplificar más, ahora podemos haciendo lo siguiente:

public override string ToString() => $”({X}, {Y})”;

Ahora podemos evitar el return y las llaves si simplemente queremos devolver un resultado

También podemos hacer esto con funciones:

public double Dist => Sqrt(X * X + Y * Y);

De esta forma mira como queda la clase anterior:

6

¿Muy sencilla y simple queda nuestra clase verdad? 😉

 

 6.- Inicializadores de índices

Imagina que tenemos el siguiente método:

7

Ahora podemos optimizarla de la siguiente forma:

8

Todo en una línea, simple, concisa y directa.

 

7.- Operadores condicionales de NULL

Tenemos ahora el siguiente método:

9

De esta forma hemos quitado las comprobaciones explícitas de null, en su lugar hemos empleado el nuevo operador “?.”, el funcionamiento es sencillo, si el lado izquierdo de la expresión es null, todo es null, si el lado izquierdo no es null, entonces ya podemos usar le punto.

10

Al poner un ? delante de las llaves y ya comprueba si el valor es Null, de esta forma hemos reducido las condicionales a lo que realmente importa.

Veamos más usos de este nuevo operador

A la hora de asignar eventos siempre comprobamos antes de esta forma:

11

8.- Operadores nameof

En este ejemplo:

12

Estamos lanzando como error el nombre del parámetro que es nulo, pero ¿qué pasa si cambiamos el nombre del parámetro? ¿Nos acordaremos también de cambiar lo que retorna el mensaje de la expceción?

Me apuesto lo que quieras a que no es así.

Pero ahora podemos dejarlo preparado para cuando refactorizemos también se cambie ese texto, de esta forma:

13

Se esta forma ya es código compilado y al cambiar el nombre del argumento de entrada (point) cambiará también al refactorizar en la excepción.

9.- Filtros de excepción 

Imagina este bloque de excepción:

14

10.- Await en catch y finally

Con esta nueva version de c# ya podemos hacer tareas asíncronas en los bloques catch y finally, esto es una buena noticia para este tipo de tareas

15

Espero que con estas mejoras hagamos un código más limpio y mantenible.

Para más información visita: http://github.com/dotnet/roslyn, y si quieres formarte con el Curso de Basic.NET

    Deja un comentario

    Información básica acerca de cómo protegemos tus datos conforme al Reglamento General de Protección de Datos
    (Reglamento UE 2016/679)

    De conformidad con lo establecido en el Reglamento General de Protección de Datos, te informamos de:
    - Quien es el responsable del tratamiento: SEAS, Estudios Superiores Abiertos S.A.U. C/Violeta Parra nº 9 50015
    Zaragoza (España).
    - Cuál es el fin del tratamiento: Gestión y control de los comentarios del blog de SEAS.
    - En que basamos la legitimación: En tu consentimiento.
    - La comunicación de los datos: No se comunicarán tus datos a terceros.
    - Los criterios de conservación de los datos: Se conservarán mientras exista interés mutuo para mantener el fin del
    tratamiento o por obligación legal. Cuando dejen de ser necesarios, procederemos a su destrucción.
    - Los derechos que te asisten:
    (i) Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al tratamiento
    (ii) derecho a retirar el consentimiento en cualquier momento y (iii) derecho a presentar una reclamación ante
    la autoridad de control (AEPD).
    - Los datos de contacto para ejercer tus derechos: SEAS, Estudios Superiores Abiertos S.A.U. C/ Violeta Parra nº 9 –
    50015 Zaragoza (España) o través de correo electrónico a lopd@estudiosabiertos.com
    - También puedes ponerte en contacto con nuestro Delegado de Protección de Datos en dpd@estudiosabiertos.com

     

    Información adicional: Puedes consultar la información adicional y detallada sobre nuestra política de privacidad