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
Utilizzare Azure Cosmos DB con i vettori
Cambiare la chiave di partizionamento di Azure Cosmos DB
Generare un hash con SHA-3 in .NET
Definire stili a livello di libreria in Angular
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
C# 12: Cosa c'è di nuovo e interessante
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Utilizzare gRPC su App Service di Azure
Utilizzare database e servizi con gli add-on di Container App