C# 7: separatori di cifre e valori letterali binari (it-IT)
Separatori di cifre
Quando si ha a che fare con numeri molto lunghi, composti cioè da molte cifre, può essere difficoltoso leggerli e comprendere il loro valore al primo sguardo.
C# 7, permette di separare le cifre, adottando un apposito separatore _ (underscore), in maniera simile a come si utilizza per esempio (in Italia) il . come separatore delle migliaia.
Supponiamo di avere dichiarato e inizializzato la seguente variabile:
int numero = 1234567890;
La variabile numero è composta da 10 cifre, con C# 7 è possibile aumentarne per aumentarne la leggibilità, e scrivere il suo valore così:
int numero = 1_234_567_890;
Il separatore _ è utilizzabile per scrivere i valori di qualunque tipo numerico (meglio naturalmente se sono tipi che che permettono valori molto grandi), per esempio long, double e così via.
long longNum= 1_234_567_890;
double longDoub = 1_234_567.890_9999;
Valori letterali binari
Un'altra miglioria, sempre a livello di leggibilità, è costituita dall'introduzione dei valori letterali binari. In tal modo C# rende possibile l'utilizzo di sequenze di bit 0 e 1, che rappresentano appunto valori numerici, senza dover convertire prima il valore in decimale oppure esadecimale.
Per esempio se avessimo la necessità di dichiarare un valore binario rappresentato come 1000, che nel sistema decimale è pari al valore 8, basta anteporre alla sequenza di bit, la stringa 0b:
int binario= 0b0001;
Naturalmente anche in questo caso possiamo separare i bit con il separatore _ visto nel precedente paragrafo, utilissimo per rappresentare numeri binari molto lunghi, per esempio raggruppandoli a blocchi di 4 bit:
binario = 0b1010_0100_1111_1100; //= 42236
Si noti che il separatore _ nel caso di valori binari o esadecimali, non può essere (e non avrebbe senso) inserito subito dopo il prefisso 0b o 0x.
La seguente istruzione darebbe un errore di compilazione:
int bin=0b_0001;
int hex=0x_FF;
come si può notare dal seguente screenshot catturato in Visual Studio 2017.
Il prefisso 0b (che può anche essere usato in mauiuscolo 0B) non è altro che zucchero sintattico, cioè non introduce alcun tipo nuovo.
Lo si può verificare stampando il tipo di una variabile:
var bin=0b0001;
Console.WriteLine(bin.GetType()); //stampa System.Int32
e quindi dei numeri in binario possono essere usati come normali interi, per esempio per eseguire delle operazioni aritmetiche:
binario= 0b0001+0b1010; //1+10
Console.WriteLine(binario); //11
Per sfruttare le novità introdotte da C# 7, potete installare e utilizzare la release 2017 di Visual Studio, disponibile anche in versione Community, liberamente scaricabile da https://www.visualstudio.com/it/downloads/.
int
binario = 0b1000;
int
binario = 0b1000;