Nuove funzionalità in C # 7

C # 7 aggiunge molte nuove funzionalità con particolare attenzione alla semplicità nella codifica e alle prestazioni migliorate. Fornisce molta attenzione al consumo di dati, alla semplificazione del codice e alle prestazioni ed è progettato per eliminare il problema di dover scrivere codice aggiuntivo in più di un modo.

Ecco una rapida panoramica delle novità e dei miglioramenti in C # 7.

  • Supporto per le funzioni locali
  • Supporto migliorato per i tipi di tupla
  • Tipi di record
  • Corrispondenza del modello
  • Tipi di riferimento non nullable
  • Tipi immutabili
  • Migliore supporto per le variabili out

Migliore supporto per le variabili out

La possibilità di dichiarare una variabile out proprio nel punto di utilizzo è una nuova grande funzionalità in C # 7. Di seguito è riportato un frammento di codice di esempio che lo illustra.

public void Save(Product p)

{

    p.SaveData(out int x);

    //Usual code

}

Un buon posto per utilizzare la variabile out è all'interno del blocco try. Basta usare una variabile booleana out dove un tipo di ritorno true indica che l'operazione è riuscita, altrimenti false.

Corrispondenza del modello

C # 7 fornisce un supporto eccellente per la corrispondenza dei modelli. È possibile utilizzare la corrispondenza del modello su qualsiasi tipo di dati, anche su tipi di dati personalizzati. Inoltre, puoi trarre vantaggio dalla corrispondenza dei modelli per estrarre i valori da un'espressione. Ecco uno snippet di codice che illustra il pattern matching al lavoro!

object obj = "This is a demonstration of pattern matching in C# 7";

if (obj is string str)

{

    Console.WriteLine(str);

}

Supporto per le funzioni locali

Spesso potresti aver bisogno di una funzione di supporto che deve essere utilizzata solo una volta, forse in un solo metodo. È ora possibile dichiarare tali funzioni all'interno di un'altra funzione. Tali funzioni sono note come funzioni locali. In sostanza, il supporto per le funzioni locali consente di dichiarare metodi all'interno di un ambito di blocco. Sebbene ciò fosse possibile utilizzando i tipi Func e Action con metodi anonimi nelle versioni precedenti del linguaggio C #, c'erano poche sfide. Non supportavano i parametri generici, params e ref e out.

Migliore supporto per le tuple

Una tupla è un raggruppamento temporaneo di valori. È simile a una classe POCO ma creata al volo. Il vantaggio principale dell'utilizzo di una tupla è consentire a un metodo di restituire più valori. È possibile utilizzare una tupla per rappresentare un set di dati eterogenei e fornire un modo semplice per accedere a tali dati. Le tuple non sono una novità e sono in circolazione da un po 'di tempo ormai. Hai il supporto per le tuple nei linguaggi di programmazione F # e Python. È possibile sfruttare una tupla per memorizzare una sequenza ordinata e finita di una sequenza finita e immutabile di dati omogenei o eterogenei di dimensioni fisse.

Ora hai il supporto anche per i valori letterali di tuple e la decostruzione di tuple. In C # 7, una tupla è considerata un tipo di valore. Quindi è un tipo mutevole e molto più efficiente per quanto riguarda le prestazioni.

Tipi di riferimento non nullable

I tipi di valore nullable sono stati introdotti per la prima volta in C # 2.0. Il tipo di riferimento non nullable è esattamente l'opposto di questa funzionalità. In sostanza, un tipo di riferimento non nullable viene usato per indicare un tipo di riferimento che è garantito non essere null. Ecco come viene dichiarato un tipo di riferimento non nullable in C # 7:

string! str; //This is a non-nullable reference type

Migliore supporto per oggetti immutabili

Un oggetto immutabile è uno il cui stato non può essere alterato una volta creato. Ciò rende sicuro un thread oggetto immutabile. Supponiamo di creare una classe che contiene una proprietà che ha un getter ma non un setter. Sì, a quanto pare, sembra che un'istanza della classe sia immutabile. Tuttavia, in un secondo momento, se qualcuno aggiunge un setter per la stessa proprietà, l'immutabilità viene persa, non è vero?

Ecco esattamente dove viene in soccorso il miglior supporto per i tipi immutabili. Con C # 7, puoi creare una nuova istanza basata su un'altra istanza. Ecco come ottenere questo risultato.

var firstObject = new Employee(101);

var secondObject = firstObject with {EmployeeId = 102};

Tipi di record

I tipi di record consentono di creare un tipo utilizzando solo le proprietà. In sostanza, un tipo di record è un tipo di dati che comprende solo proprietà. Il frammento di codice seguente illustra come dichiarare un tipo di record.

 class Rectangle(int Height, int Breadth);