Molto spesso, quando si passano parametri a un costruttore questi vengono utilizzati per inizializzare proprietà magari tramite calcoli o trasformazioni. Ad esempio, se passiamo due coppie x/y ad una classe, questa potrebbe usarle per calcolare la distanza tra i punti, la direzione, l'angolazione e altro ancora. Queste operazioni vengono spesso fatte nel costruttore, ma quando usiamo i primary constructor non abbiamo a disposizione codice quindi dobbiamo chiamare funzioni nell'inizializzatore delle variabili passando in input i parametri del primary constructor.
public class MyClass(double dx, double dy, double sx, double sy) { public readonly double Distance { get; } = CalcDistance(dx, dy, sx, sy); public readonly double Direction { get; } = CalcDirection(dy, dx); public CalcDirection(double dy, double dx) { ... } public CalcDistance(double dx, double dy, double sx, double sy) { ... } }
Grazie a questa funzionalità, il codice è molto più compatto in confronto a quello che si doveva scrivere prima che mettiamo qui sotto come riferimento.
public class MyClass { public readonly double Distance { get; } public readonly double Direction { get; } public Distance(double dx, double dy, double sx, double sy) { Distance = CalcDistance(dx, dy, sx, sy); Direction = CalcDirection(dy, dx); } public CalcDirection(double dy, double dx) { ... } public CalcDistance(double dx, double dy, double sx, double sy) { ... } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire il colore CSS con HWB
Cambiare la chiave di partizionamento di Azure Cosmos DB
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Implementare l'infinite scroll con QuickGrid in Blazor Server
Gestione dell'annidamento delle regole dei layer in CSS
Configurare lo startup di applicazioni server e client con .NET Aspire
Effettuare il binding di date in Blazor
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Estrarre dati randomici da una lista di oggetti in C#
Paginare i risultati con QuickGrid in Blazor
Generare la software bill of material (SBOM) in GitHub