C# aggiornamento entity

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

Local function

Le local function sono un nuovo costrutto che permette di scrivere funzioni all’interno di altre funzioni. Lo scope delle variabili dichiarate all’interno delle local function rimane inalterato rispetto all’utilizzo delle funzioni tradizionali: il miglioramento delle performance riguarda l’accesso delle variabili dichiarate all’interno della funzione “genitore” dal momento che non è necessaria una nuova dichiarazione. Il tutto si traduce nel non dover allocare memoria all’interno dello stack o del’heap.

Valori di ritorno e variabili locali per riferimento

I Valori di ritorno e variabili locali per riferimento consentono di gestire variabili, eventualmente modificandole, senza dover allocare nuova memoria. In C# 6 prima di poter utilizzare una variabile tramite la keyword out, era necessario dichiararla. In C# 7.0 non è più necessario effettuare la dichiarazione.

a partire dalla versione 7.0 è possibile utilizzare il seguente codice:

In pratica è stata dichiara la variabile date all’interno dello scope della funzione, ma è comunque accessibile all’esterno. Nel caso in cui la TryParse generi un’eccezione, il valore associato alla variabile date sarà il valore di default per il suo tipo (in questo caso il valore di default del tipo DateTime).

Passaggio di parametri utilizzando out e ref

Il passaggio di parametri per riferimento può essere effettuato utilizzando le keyword out e ref. Utilizzando ref il parametro deve essere inizializzato prima d poter essere utilizzato, mentre utilizzando la variabile con la keyword out viene indicato al compilatore che il valore verrà inizializzato all’interno del metodo.

Utilizzando ref:

  • il valore del parametro è già inizializzato
  • il metodo può leggere e/o modificare il valore del parametro

Utilizzando out:

  • il valore del parametro non è inizializzato, e quindi non potrà essere letto fino a quando verrà impostato
  • il metodo deve impostare il valore del parametro, prima di ritornare

A partire da C# 7.0 è possibile ritornare da un metodo una variabile per riferimento. La variabile ritornata è una variabile locale preceduta dalla keyword ref.  Senza l’utilizzo di ref, il valore ritornato è di tipo valore.

Passando un valore per riferimento ad un metodo ed assegnandogli un valore durante il normale flusso delle operazioni, tale valore sarà disponibile al termine dell’esecuzione del metodo.

Analizziamo il seguente codice:

dove il valore di ritorno è di tipo riferimento. All’interno del metodo è stata dichiarata una variabile x di tipo intero che “punta” per riferimento al primo elemento dell’array.  Poichè il valore di ritorno è per riferimento, il metodo precedente si può anche scrivere in maniera più compatta nel seguente modo:

Il compilatore non genera nessun errore perchè il tipo restituito è per riferimento. Non sarebbe stato possibile restituire una variabile locale di tipo intera, perchè il tipo int è un tipo a valore ed il suo scope sarebbe quindi terminato alla fine del metodo stesso.

Variabili locali di tipo ref

In C# 7 è possibile dichiarare variabili locali di tipo ref:

la variabile x1 è definita per riferimento rispetto alla variabile x. In questo modo modificando il valore di x1 verrà modificato anche il valore di x.

L’utilizzo di variabili passate per riferimento è un modo rapido quando devono essere sviluppate applicazioni in cui le performance sono un elemento predominante.

 

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.