VS2017 – Caricamento parallelo dei progetti

Con il rilascio della versione 15.6 di Visual Studio 2017 è stato introdotto il Parallel Project Load, che consente di migliorare sensibilmente la velocità di caricamento delle soluzioni composte da molti progetti. Il nuovo modello di caricamento sfrutta le migliorie introdotte nella versione 15.5 con l’obiettivo di migliorare la generazione dei dati di Intellisense, parallelizzando le fasi di build  a design-time. Questa miglioria consente di velocizzare l’apertura delle soluzioni sfruttando il modello di esecuzione parallelo, soprattutto quando non sono state aperte in precedenza. Intellisense, inoltre, utilizza una sistema interno di cache che non richiede l’intera rigenerazione durante le aperture successive.

Continua a leggere VS2017 – Caricamento parallelo dei progetti

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.

Novità in C# 7.1

A distanza di qualche mese dalla pubblicazione analizziamo alcune delle novità in C# 7.1.

C# 7.1 è stato pubblicato con l’upgrade 15.3 di Visual Studio 2017 (Agosto 2017). A differenza di altri rilasci, non tutte le novità sono disponibili automaticamente dopo l’aggiornamento, ma è necessario modificare manualmente la configurazione di Visual Studio. E’ possibile abilitare le nuove features del linguaggio dalla scheda Avanzate presente nelle proprietà di Compilazione del progetto.Visual Studio Impostazione per C#Per impostazione predefinita Visual studio utilizza l’ultima major version: per poter abilitare le novità degli ultimi rilasci è necessario impostare latest minor version.

Nel seguito di questo articolo vedremo alcune delle novità di C# 7.1.

Continua a leggere Novità in C# 7.1

Novità in C# 7.0 – Semplificazioni nel codice

In C# 7.0 sono presenti alcune funzionalità che consentono di semplificare la scrittura del codice, rendendo molto più semplice la sua lettura.

In particolare sono state introdotti i metodo expression bodied e throw expression.

Possiamo utilizzare le Expression bodied :

  • nei metodi
  • nelle properties
  • nei costruttori
  • nei distruttori
  • nelle throw exception

Le expression bodied utilizzano l’operatore “fat arrow” (=>) per definire il codice da eseguire.

Continua a leggere Novità in C# 7.0 – Semplificazioni nel codice

Novità in C# 7.0 – Performance

In C# 7.0 sono state migliorate le performance dell’esecuzione del codice, introducendo nuovi costrutti che consentono di migliorare la copia dei dati all’interno della memoria.

Per quanto riguarda le performance c# 7.0 ha introdotto due nuove features:

  • local function
  • Valori di ritorno e variabili locali per riferimento

Continua a leggere Novità in C# 7.0 – Performance