Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

18 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 4 de julio de 2017
C#Poco a poco seguimos desmenuzando las novedades disponibles tras la llegada de C# 7. Hasta el momento hemos visto las siguientes:
En esta ocasión veremos un par de pequeñas adiciones al lenguaje que, aunque de mucho menor calado de otras que ya hemos repasado, también merecen tener su minutillo de protagonismo ;)


En primer lugar, C# 7 permite el uso directo de literales binarios en el código. Al igual que para literales hexadecimales solemos usar el prefijo "0x", en el caso de los binarios utilizaremos "0b" como en el siguiente ejemplo:
var binary = 0b101010111100110111101111;
Observemos ahora el código anterior y hagámonos una sencilla pregunta: ¿cuántos dígitos hemos escrito en el literal binario anterior? O ¿Qué bits corresponden al nibble inferior del segundo byte menos significativo de esa contante?

Las preguntas no tienen una sencilla respuesta porque la legibilidad de ese tipo de constantes es bastante escasa debido a su longitud. Y esto nos lleva a la siguiente mejora del lenguaje: el separador de dígitos numéricos.

La idea, tomada de otros lenguajes como Java, Python, Ruby o el clásico Ada, consiste en permitir el uso del carácter guión bajo "_" como separador en literales numéricos con el objetivo de mejorar la legibilidad de código en porciones que definen constantes o valores.

Revisemos de nuevo el ejemplo anterior, ahora utilizando este carácter separador. Mucho más claro, ¿verdad?
var binary = 0b1010_1011_1100_1101_1110_1111;
Este separador puede usarse en cualquier tipo de constante numérica. El lenguaje no utiliza ninguna asunción en cuanto al significado de los grupos en los que queda separada la constante, simplemente ignorará los underscore que se encuentre durante el parseo:
var dec = 999_999;
var hex = 0xFF_FF_FF;

Console.WriteLine(123_456 == 1_2_3_4_5_6); // True
Console.WriteLine(0b1111_1111_1111_1111 == 0xFF_FF); // True
Así de simple :)

Publicado en Variable not found.

2 Comentarios:

Apertil dijo...

Me encanta esta serie sobre c#!! Ahora que estoy trabajando con este lenguaje todo lo que pueda leer me vien muy bien

José María Aguilar dijo...

Muchas gracias! Siempre alegra saber que esto es útil para alguien :)

Un saludo!