Scopri come le modifiche imminenti miglioreranno il tuo codice e renderanno la tua vita di sviluppatore un po' più facile.

I dettagli dell'attesissima anteprima di C# 12 sono trapelati, dando una sbirciatina alle funzionalità imminenti che dovrebbero rivoluzionare il linguaggio. Queste funzionalità sono molto promettenti per migliorare la leggibilità del codice, ottimizzare le prestazioni e sbloccare funzionalità avanzate del linguaggio.

Espressioni di commutazione migliorate

Introduzione di C# 8 espressioni switch di base che consentono di esprimere una logica condizionale complessa in modo conciso, in una forma leggibile. C# 12 va oltre introducendo una nuova sintassi di corrispondenza dei modelli per le espressioni switch, rendendo ancora più semplice la scrittura di codice espressivo e conciso.

Considera il seguente frammento di codice.

var risultato = ogg interruttore
{
int io Quando io > 0 => "Positivo",
int io Quando io < 0 => "Negativo",
_ => "Zero"
};

Questo codice utilizza espressioni switch per determinare se un numero intero lo è

instagram viewer
positivo, negativo, O zero. In C# 12 è possibile semplificare ulteriormente questo codice utilizzando la nuova sintassi di corrispondenza dei modelli:

var risultato = ogg interruttore
{
> 0 => "Positivo",
< 0 => "Negativo",
_ => "Zero"
};

Questa sintassi consente di omettere il file Quando parola chiave e utilizzare gli operatori relazionali direttamente nell'espressione switch.

Costruttori primari per classi e strutture

Ora puoi creare costruttori primari in any classe O struct (un'alternativa di classe leggera). Usando i costruttori primari, puoi aggiungere parametri alla dichiarazione di classe e usare questi valori all'interno del corpo della classe.

C# 9 ha introdotto i costruttori primari come parte della sintassi posizionale per i record. C# 12 li estende a tutte le strutture e classi.

È possibile inserire i parametri dopo il nome del tipo tra parentesi come mostrato di seguito:

pubblico classe Alunno(int id, corda nome, IEnumerable<decimale> gradi)
{
pubblicoAlunno(int id, corda nome): Questo(id, nome, Enumerable. Vuoto<decimale>()) { }
pubblicoint id => id;
pubblicocorda Nome { Ottenere; impostato; } = nome. Ordinare();
pubblicodecimale GPA => voti. Qualunque()? gradi. Media(): 4.0M;
}

I parametri di un costruttore primario sono nell'ambito dell'intero corpo del tipo dichiarante. È possibile impostare proprietà o campi oppure utilizzarli anche in metodi o funzioni locali come variabili. È possibile fornire questi parametri anche a un costruttore di base.

Miglioramenti alle stringhe interpolate

Le stringhe interpolate esistono da C# 6. In C# 12 è ora possibile creare valori dinamici per le stringhe usando espressioni complicate.

int io = 5;
corda uscita = $"Il valore di i è {io}, e il suo quadrato è {io*io}.";
Consolle. WriteLine (uscita);

Questo codice stampa "Il valore di i è 5 e il suo quadrato è 25".

Utilizzo di direttive per tipi aggiuntivi

Con C# 12 è possibile usare la direttiva using alias per creare alias di qualsiasi tipo, non solo dei tipi denominati. È possibile creare alias semantici per tuple, array, puntatori o altri tipi non sicuri.

Ecco alcuni esempi:

utilizzando Misura = (corda Unità, int Distanza);
utilizzando UnitàInt = int?;
Esempio di utilizzo degli alias:
pubblicovuotoCalcolo(Misurazione della misura)
{
// Corpo del metodo
}

Miglioramenti dell'espressione lambda

C# 12 potenzia le espressioni lambda consentendo di definire i valori predefiniti per i parametri. La sintassi è identica a quella di altri parametri predefiniti:

Per esempio, (int incrementTo = 5) => incrementTo + 1 imposta un valore predefinito di 5 per il parametro incrementTo, che la chiamata lambda utilizzerà se non gli passi un valore.

var incrementoConDefault = (int incrementoA = 5) => incrementTo + 1;
incrementoConDefault(); // 6
incrementoWithDefault(9); // 10

Oltre a ciò, sono stati apportati molti altri miglioramenti alle espressioni lambda per renderle più efficaci.

Per esempio:

  • Ora puoi creare espressioni più complesse all'interno delle funzioni lambda.
  • Ora puoi trasformare le espressioni lambda in alberi delle espressioni che semplificano le query complesse e ottimizzano le prestazioni.

Flussi asincroni

È possibile scorrere le origini dati asincrone con il new flussi asincroni caratteristica di C# 12. Questo nuovo iteratore—aspetta per ciascuno—ti aiuta a scorrere su un insieme di dati asincroni:

aspettaper ciascuno (var articolo InGetItemsAsync())
{
Consolle. WriteLine (articolo.valore);
}

C# 12: Rivoluzionare il codice con nuove entusiasmanti funzionalità

In previsione di C# 12, puoi aspettarti un aggiornamento rivoluzionario con nuove entusiasmanti funzionalità. Questi progressi, come le espressioni switch migliorate, i costruttori primari e i miglioramenti alle espressioni lambda, indicano una forte attenzione alla semplicità, alla flessibilità e alle prestazioni del codice.

C# 12 è pronto a offrire un significativo balzo in avanti, consentendoti di scrivere codice più espressivo, efficiente e potente.