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
Anonimizzare i dati sensibili nei log di Azure Front Door
Managed deployment strategy in Azure DevOps
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Generare velocemente pagine CRUD in Blazor con QuickGrid
Selettore CSS :has() e i suoi casi d'uso avanzati
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Introduzione alle Container Queries
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Creare una libreria CSS universale: Cards
Usare le navigation property in QuickGrid di Blazor
I più letti di oggi
- a #RealCodeConf4 il 25 maggio a Firenze parleremo di #silverlight4. iscrizioni gratis su http://u.aspitalia.com/g9
- #HTML5 schema per avere l'intellisense su #VS2008 (anche express) http://u.aspitalia.com/ed
- Parallelizzare le chiamate HTTP con async/await e le Promise in JavaScript
- Rendere sicuro l'endpoint di HealthCheck in ASP.NET Core
- prime app per #wp7summer. vuoi fare strada con #wp7? 5 app e partecipi alla nostra nuova competition: http://aspitalia.com/yu #wp7dev
- disponibile #azure sdk 2.1, con supporto a #vs13 e nuovi tool per #vs12: https://aspit.co/ans