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
Eseguire una query su SQL Azure tramite un workflow di GitHub
Effettuare il refresh dei dati di una QuickGrid di Blazor
Aggiungere interattività lato server in Blazor 8
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Applicare un filtro per recuperare alcune issue di GitHub
Creazione di componenti personalizzati in React.js con Tailwind CSS
Creare gruppi di client per Event Grid MQTT
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Le novità di Angular: i miglioramenti alla CLI
Ordinare randomicamente una lista in C#
Utilizzare QuickGrid di Blazor con Entity Framework
Usare le collection expression per inizializzare una lista di oggetti in C#