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
Simulare Azure Cosmos DB in locale con Docker
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Collegare applicazioni server e client con .NET Aspire
Utilizzare Azure Cosmos DB con i vettori
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Recuperare App Service cancellati su Azure
Eseguire script pre e post esecuzione di un workflow di GitHub
Anonimizzare i dati sensibili nei log di Azure Front Door
Utilizzare QuickGrid di Blazor con Entity Framework
Come EF 8 ha ottimizzato le query che usano il metodo Contains