Fino alla versione 9 di C#, quando vogliamo assegnare una lambda expression a una variabile, dobbiamo assegnare alla variabile il tipo esplicito che è Func<,> o Action<,> a seconda che la funzione torni un valore o meno e a seconda del numero di parametri.
Func<string, int> parse = (string input) => Convert.ToInt32(input);
A partire da C# 10, possiamo utilizzare la parola chiave var per dichiarare la variabile a cui la lambda punta a patto che il compilatore abbia tutte le informazioni per desumere il tipo corretto.
var parse = (string input) => Convert.ToInt32(input);
Lo stesso concetto si può applicare ai method group.
//c# 9 Func<int> read = Console.Read; //c# 10 var read = Console.Read;
In questo caso il metodo Read non ha overload quindi il compilatore è in grado di desumere il tipo della variabile. Se invece del metodo Read usassimo Write, il compilatore non sarebbe in grado di desumere il tipo della variabile in quanto Write ha più overload.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare una container image come runner di GitHub Actions
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Sostituire la GitHub Action di login su private registry
Usare il versioning con i controller di ASP.NET Core Web API
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Specificare il versioning nel path degli URL in ASP.NET Web API
Utilizzare Tailwind CSS all'interno di React: primi componenti
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Cambiare la chiave di partizionamento di Azure Cosmos DB
Evitare il flickering dei componenti nel prerender di Blazor 8
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core