C# aggiornamento entity

Novità in C# 7.2

Dopo il rilascio di C# 7.1, è stato pubblicato l’aggiornamento C# 7.2 che porta con se alcune modifiche abbastanza significative alla major release 7.0. Nel seguito di questo articolo analizzeremo le più importanti.

Digital separator after base specifier

Una delle principali novità introdotte in C# 7.0 è la possibilità di definire il separatore numerico attraverso il simbolo _ (underscore). Questa nuova sintassi consente di rendere più leggibile il codice quando si ha a che fare con numeri e formati. Inoltre consente di rappresentare in modo più semplice numeri di grande dimensione. Ad esempio, il seguente codice

consente di rappresentare rispettivamente un numero decimale, un numero esadecimale e un numero binario. Da notare che il formato è rappresentato dal prefisso del numero, ovvero 1, 0x e 0b.

In C# 7.2 è possibile posizionare il carattere underscore dopo la definizione del tipo. Il codice precedente può essere rappresentato nel modo seguente:

Non-trailing Named Arguments

C# dalla versione 4.0 è stato il primo linguaggio di programmazione a permettere il passaggio di parametri, con nome, ai metodi. Questo tipo di approccio consente di utilizzare parametri opzionali, facendo in modo che il compilatore non generi un errore durante il riconoscimento dei parametri.

Il seguente metodo:

definisce tre parametri, assegnando un nome al secondo e al terzo. Il modo più semplice, ma anche quello meno leggibile, per richiamare il metodo è il seguente:

Per rendere il metodo più comprensibile può essere utilizzata la seguente sintassi:

e scambiando l’ordine dei parametri:

Una limitazione era rappresentata dall’impossibilità di far seguire ad un parametro con nome, un parametro posizionale. In C# 7.2, il problema viene superato, ed è possibile compilare codice del tipo:

Private Protected

Fino alla versione 7.1 di C# erano disponibili i seguenti modificatori di accesso:

  • public : non sono presenti limitazioni nell’accesso;
  • protected: l’accesso è limitato alla classe o ai tipi derivati della classe che li contiene
  • internal: l’accesso è consentito solo nell’assembly corrente
  • private: l’accesso è consentito solo al contenitore
  • protected internal: l’accesso è limitato all’assembly corrente o i tipi derivati dalla classe di appartenenza.

A partire dalla versione 7.2 è stato introdotto un nuovo modificatore: private protected.

L’introduzione di questo nuovo modificare consente di limitare l’accesso a una classe o i tipi derivati dalla classe di appartenenza all’interno dell’assembly corrente.

Un membro dichiarato private protect non è accessibile per la classe derivata se è dichiarata all’esterno dell’assembly corrente.

Con questa nuova funzionalità il numero totale di modificatori di accesso sale a sei.

Un membro dichiarato private protect non è accessibile all’interno dell’assembly per le classi che non ereditano dalla classe in cui è dichiarato.

 Ref readonly

L’introduzione di questa nuova funzionalità può essere considerata come l’opposto delle variabili con la keyword out.  Le variabili utilizzate come parametro di un metodo con la keyword ref sono passate per riferimento. Una modifica all’interno del metodo, viene riportata all’esterno del metodo stesso. Le variabili utilizzate come parametro di un metodo con la keyword out possono essere utilizzate solo per ritornare un valore (output) e non come input.

Dichiarando un parametro di un metodo come readonly ref il parametro viene passato al metodo e cercando di modificarne il valore, il compilatore segnalerà un errore in quanto non modificabile. Allo stesso modo, passando un parametro out ad un metodo dovrà essere valorizzato prima di poter essere ritornato. Utilizzando insieme parametri readonly ref e out possiamo creare metodi che accettano in ingresso variabili non modificabili per riferimento e variabili che devono essere valorizzate prima che il metodo termini il suo normale flusso.

Pubblicato da

Andrea Merlin

Laureato in informatica, diversi corsi di specializzazione legati allo Sviluppo Software e alla Computer forensics. Appassionato di nuove tecnologie, amo la programmazione, la Business Intelligence e tematiche legate alla Privacy.Sempre alla ricerca di nuove idee, stimoli … e progetti da seguire!Amo trascorrere il tempo libero in Val Borbera, un piccolo angolo del Piemonte, in provincia di Alessandria.