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
Planning & Specification Driven Development + GitHub Copilot
Utilizzare il Null conditional assignment di C# 14
Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
Ricerca delle GitHub issue tramite operatori logici
Integrare il Docker Model Runner in un workflow di GitHub
Personalizzare i parametri del CSS Scroll Snap
Validare i dati di una colonna JSON in SQL Server
Referenziare un package NuGet in una file based app .NET
Self-healing degli unit test con Copilot in GitHub
Blue/Green Release in locale con .NET Aspire
Esporre tool MCP da API REST con Azure App Service


