Nello script #391 abbiamo visto come inizializzare il valore di una proprietà sfruttando la nuova sintassi di C# 6. Nello script, la proprietà era sia in lettura che scrittura e il suo valore era impostato con un valore statico. A volte queste condizioni non possono essere soddisfatte, perchè la proprietà deve essere in sola lettura e il valore da assegnare deve essere calcolato a run time. C# 6 permette di impostare a runtime il valore di una proprietà in sola lettura a patto che il valore sia impostato nel costruttore come mostrato nell'esempio.
public class Person { public string FullName { get; } public Person(string firstName, string lastName) { FullName = $"{firstName} {lastName}"; } }
Fino a C# 5 un risultato simile era ottenibile usando o campi readonly o proprietà con setter privato. Nel primo caso il problema consiste nel fatto che i campi readonly non possono essere messi in binding, mentre nel secondo caso il problema è che avere un setter permette di modificare la proprietà e questo non dovrebbe essere possibile dopo l'inizializzazione. Con C# 6 questi problemi sono superati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Creare una libreria CSS universale: Clip-path
Utilizzare Copilot con Azure Cosmos DB
Gestione degli stili CSS con le regole @layer
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Migliorare la sicurezza dei prompt con Azure AI Studio
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Gestione CSS in Blazor con .NET 9
Utilizzare QuickGrid di Blazor con Entity Framework
Simulare Azure Cosmos DB in locale con Docker
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Ordinare randomicamente una lista in C#
I più letti di oggi
- Recuperare l'ultima versione di una release di GitHub
- Rendere i propri workflow e le GitHub Action utilizzate più sicure
- Disabilitare le run concorrenti di una pipeline di Azure DevOps
- Gestione dei nomi con le regole @layer in CSS
- Introduzione alle Container Queries in CSS
- Fornire parametri ad un Web component HTML
- Visual Studio Live: what's next - Online
- .NET Conference Italia 2021 - Online
- ASP.NET MVC Release Candidate 2