La versione 9 di C# ha introdotto i record; classi di cui, una volta istanziate, non si possono modificare le proprietà. Quando il compilatore C# incontra un record e deve generarne il codice, questo genera una classe con proprietà in sola lettura e valorizzabili solo da costruttore. Il fatto che il compilatore generi una classe è uno dei limiti di C# 9, infatti esistono casi in cui sarebbe più corretto generare una struct, principalmente per motivi di performance.
Questa possibilità è stata introdotta con C# 10 semplicemente anteponendo la parola chiave record davanti a struct così come mostrato nell'esempio.
public record struct Person { public string FirstName { get; init; } public string LastName { get; init; } }
Volendo, possiamo utilizzare anche la versione più concisa dove dichiariamo direttamente le proprietà nel costruttore. In questo caso dobbiamo anche specificare la parola chiave readonly davanti a record.
public readonly record struct Product(string FirstName, string LastName);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Effettuare il refresh dei dati di una QuickGrid di Blazor
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Eseguire query verso tipi non mappati in Entity Framework Core
Generare token per autenicarsi sulle API di GitHub
Utilizzare Model as a Service su Microsoft Azure
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Utilizzare gRPC su App Service di Azure
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Aggiungere interattività lato server in Blazor 8
Eseguire i worklow di GitHub su runner potenziati