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
Effettuare il refresh dei dati di una QuickGrid di Blazor
Migliora la resilienza delle applicazioni con .NET e Azure Container Apps
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Short-circuiting della Pipeline in ASP.NET Core
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Migliora le tue soluzioni ASP.NET Core con Azure OpenAI
Code scanning e advanced security con Azure DevOps
Gestire liste di tipi semplici con Entity Framework Core
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Usare una container image come runner di GitHub Actions