Costruttori primari nelle classi
Dichiari i parametri del costruttore nell'intestazione del tipo.
Costruttori primari nelle classi è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Che cos'è un costruttore primario?
Un costruttore primario consente di dichiarare i parametri del costruttore direttamente nell'intestazione della classe, ad esempio class Point(int x, int y). I parametri sono nell'ambito dell'intero corpo della classe.
using System;
class Point(int x, int y) {
public int X => x;
public int Y => y;
}
var p = new Point(3, 4);
Console.WriteLine(p.X + "," + p.Y); // 3,4Niente più codice ripetitivo
Prima dei costruttori primari era necessario scrivere il corpo di un costruttore solo per copiare i parametri nei campi. Ora l'intestazione dichiara i parametri, che possono essere usati direttamente.
using System;
class Greeter(string name) {
public string Greet() => "Hello, " + name + "!";
}
Console.WriteLine(new Greeter("Ada").Greet()); // Hello, Ada!I parametri sono disponibili ovunque
I parametri del costruttore primario possono essere usati negli inizializzatori di proprietà, nei corpi dei metodi e negli inizializzatori di campi in qualsiasi punto della classe.
using System;
class Circle(double radius) {
public double Area => Math.PI * radius * radius;
public double Circumference => 2 * Math.PI * radius;
}
var c = new Circle(2);
Console.WriteLine(Math.Round(c.Area, 2)); // 12.57Inizializzare campi e proprietà
È possibile usare un parametro del costruttore primario per inizializzare un campo o una proprietà al momento della dichiarazione.
using System;
class Account(decimal initial) {
public decimal Balance { get; private set; } = initial;
public void Deposit(decimal amount) => Balance += amount;
}
var a = new Account(100m);
a.Deposit(50m);
Console.WriteLine(a.Balance); // 150Convalida nell'intestazione
È possibile convalidare inline i parametri del costruttore primario usando espressioni throw durante l'assegnazione a un campo.
using System;
class Person(string name) {
public string Name { get; } =
string.IsNullOrWhiteSpace(name)
? throw new ArgumentException("name required")
: name;
}
Console.WriteLine(new Person("Lin").Name); // LinAggiungere altri costruttori
Una classe con un costruttore primario può comunque dichiarare altri costruttori, ma questi devono concatenarsi al costruttore primario tramite : this(...).
using System;
class Box(int width, int height) {
public int Width => width;
public int Height => height;
public Box(int size) : this(size, size) { }
}
var sq = new Box(5);
Console.WriteLine(sq.Width + "x" + sq.Height); // 5x5Corpi dei costruttori primari
I costruttori primari non hanno un corpo proprio. La logica che deve essere eseguita durante la costruzione va inserita negli inizializzatori di campi o in un costruttore normale concatenato.
using System;
class Logger(string prefix) {
private readonly string tag = "[" + prefix + "]";
public void Log(string msg) => Console.WriteLine(tag + " " + msg);
}
new Logger("INFO").Log("started"); // [INFO] startedNon sono automaticamente proprietà pubbliche
A differenza dei record, un costruttore primario in una classe normale non crea proprietà pubbliche. I parametri sono privati della classe, a meno che non li esponga esplicitamente.
using System;
class Temp(double celsius) {
// celsius is NOT a public property here
public double Fahrenheit => celsius * 9 / 5 + 32;
}
Console.WriteLine(new Temp(100).Fahrenheit); // 212I parametri acquisiti diventano campi
Quando un parametro del costruttore primario viene usato in un metodo, e non solo in un inizializzatore, il compilatore lo acquisisce in un campo nascosto, in modo che rimanga disponibile dopo la costruzione.
using System;
class Counter(int start) {
private int value = start;
public int Next() => value++;
}
var c = new Counter(10);
Console.WriteLine(c.Next()); // 10
Console.WriteLine(c.Next()); // 11Dependency injection più semplice
I costruttori primari sono molto usati per la DI: si dichiarano i servizi nell'intestazione e li si usa nei metodi, senza assegnare manualmente i campi.
using System;
interface IClock { string Now(); }
class FakeClock : IClock { public string Now() => "12:00"; }
class Service(IClock clock) {
public string Report() => "Time is " + clock.Now();
}
Console.WriteLine(new Service(new FakeClock()).Report()); // Time is 12:00Mettere insieme i concetti
Questa classe usa un costruttore primario per le proprie dipendenze ed espone una proprietà calcolata, senza un corpo esplicito del costruttore.
using System;
class Rectangle(double w, double h) {
public double Area => w * h;
public double Perimeter => 2 * (w + h);
}
var r = new Rectangle(3, 4);
Console.WriteLine(r.Area + " " + r.Perimeter); // 12 14Verifica rapida
Verifichi la Sua comprensione dei costruttori primari nelle classi.
Riepilogo
Ha appreso i costruttori primari nelle classi.
class C(int x)dichiara i parametri del costruttore nell'intestazione.- I parametri sono disponibili nell'intero corpo della classe.
- I costruttori aggiuntivi si concatenano tramite
: this(...). - In una classe normale non diventano automaticamente proprietà pubbliche.
Domande Frequenti
La lezione «Costruttori primari nelle classi» è gratuita?
Sì — il testo completo di «Costruttori primari nelle classi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Costruttori primari nelle classi»?
Dichiari i parametri del costruttore nell'intestazione del tipo. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Costruttori primari nelle classi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Costruttori primari nelle classi
- Cattura dei parametri nei membri
- Costruttori primari con gli struct
- Combinazione con proprietà e tipi base