Definizione dei costruttori
Crei istanze con costruttori parametrizzati.
Definizione dei costruttori è 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
Un costruttore è un metodo speciale che viene eseguito quando si crea un oggetto con new. Ha lo stesso nome della classe e non ha un tipo restituito. Il suo compito è portare l'oggetto in uno stato iniziale valido.
using System;
class Dog
{
public Dog()
{
Console.WriteLine("A dog was created");
}
}
class Program
{
static void Main()
{
var d = new Dog();
}
}Costruttori con parametri
Un costruttore può accettare parametri, così il chiamante fornisce i valori iniziali. È lo schema più comune per impostare i dati obbligatori.
using System;
class Person
{
public string Name;
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
class Program
{
static void Main()
{
var p = new Person("Ada", 36);
Console.WriteLine(p.Name + " is " + p.Age);
}
}La parola chiave this nei costruttori
Quando il nome di un parametro coincide con quello di un campo, usi this. per fare riferimento al campo e distinguerlo dal parametro.
using System;
class Book
{
public string Title;
public Book(string title)
{
this.Title = title;
}
}
class Program
{
static void Main()
{
var b = new Book("C# Basics");
Console.WriteLine(b.Title);
}
}Il costruttore predefinito
Se non si scrive alcun costruttore, il compilatore ne fornisce uno senza parametri. Tuttavia, non appena si definisce un costruttore qualsiasi, quello predefinito scompare, a meno che non lo si aggiunga manualmente.
using System;
class Empty
{
// No constructor written -> compiler supplies a default one
public int Value;
}
class Program
{
static void Main()
{
var e = new Empty();
Console.WriteLine("Default Value: " + e.Value);
}
}Convalida in un costruttore
Un costruttore può convalidare i propri argomenti, garantendo che l'oggetto non venga mai creato in uno stato non valido.
using System;
class Account
{
public decimal Balance;
public Account(decimal initial)
{
if (initial < 0)
throw new ArgumentException("Initial balance cannot be negative");
Balance = initial;
}
}
class Program
{
static void Main()
{
var a = new Account(100m);
Console.WriteLine("Balance: " + a.Balance);
}
}Sovraccarico dei costruttori
Una classe può avere più costruttori con elenchi di parametri diversi. Il compilatore sceglie quello corrispondente agli argomenti passati.
using System;
class Point
{
public int X;
public int Y;
public Point()
{
X = 0;
Y = 0;
}
public Point(int x, int y)
{
X = x;
Y = y;
}
}
class Program
{
static void Main()
{
var origin = new Point();
var p = new Point(3, 4);
Console.WriteLine(origin.X + "," + origin.Y + " | " + p.X + "," + p.Y);
}
}Impostare le proprietà da un costruttore
I costruttori assegnano comunemente valori alle proprietà automatiche, comprese quelle init-only o con setter privato.
using System;
class Product
{
public string Name { get; }
public decimal Price { get; }
public Product(string name, decimal price)
{
Name = name;
Price = price;
}
}
class Program
{
static void Main()
{
var p = new Product("Pen", 1.50m);
Console.WriteLine(p.Name + ": " + p.Price);
}
}Valori predefiniti dei parametri
I parametri del costruttore possono avere valori predefiniti, consentendo al chiamante di ometterli. In questo modo spesso si riduce la necessità di diversi overload.
using System;
class Circle
{
public double Radius;
public string Color;
public Circle(double radius, string color = "black")
{
Radius = radius;
Color = color;
}
}
class Program
{
static void Main()
{
var c1 = new Circle(2);
var c2 = new Circle(3, "red");
Console.WriteLine(c1.Color + " | " + c2.Color);
}
}Eseguire operazioni in un costruttore
Oltre ad assegnare valori ai campi, un costruttore può calcolare dati derivati o preparare le risorse necessarie all'oggetto.
using System;
class Rectangle
{
public double Width;
public double Height;
public double Area;
public Rectangle(double w, double h)
{
Width = w;
Height = h;
Area = w * h;
}
}
class Program
{
static void Main()
{
var r = new Rectangle(4, 5);
Console.WriteLine("Area: " + r.Area);
}
}Costruttori e dati obbligatori
Inserire i valori obbligatori nel costruttore li rende effettivamente necessari: non è possibile creare l'oggetto senza fornirli.
using System;
class User
{
public string Id;
public string Email;
public User(string id, string email)
{
Id = id;
Email = email;
}
}
class Program
{
static void Main()
{
var u = new User("u1", "a@b.com");
Console.WriteLine(u.Id + " / " + u.Email);
}
}Mettere tutto insieme
Un costruttore ben progettato convalida l'input, assegna i valori ai campi e lascia l'oggetto completamente pronto per l'uso.
using System;
class Temperature
{
public double Celsius { get; }
public double Fahrenheit { get; }
public Temperature(double celsius)
{
if (celsius < -273.15)
throw new ArgumentException("Below absolute zero");
Celsius = celsius;
Fahrenheit = celsius * 9 / 5 + 32;
}
}
class Program
{
static void Main()
{
var t = new Temperature(25);
Console.WriteLine(t.Celsius + "C = " + t.Fahrenheit + "F");
}
}Verifica rapida
Metta alla prova la Sua comprensione dei costruttori.
Riepilogo
Un costruttore ha lo stesso nome della classe, non ha un tipo restituito e viene eseguito con new. I costruttori con parametri accettano valori iniziali; this. consente di distinguere i campi dai parametri. È possibile sovraccaricare i costruttori e usare valori predefiniti per i parametri. La definizione di un costruttore qualsiasi rimuove quello predefinito generato automaticamente.
using System;
class Demo
{
public string Name;
public Demo(string name = "anon")
{
this.Name = name;
}
}
class Program
{
static void Main()
{
Console.WriteLine(new Demo().Name);
Console.WriteLine(new Demo("Kai").Name);
}
}Impara C# con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 93
- Lezioni
- 346
Domande Frequenti
La lezione «Definizione dei costruttori» è gratuita?
Sì — il testo completo di «Definizione dei costruttori» è 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 «Definizione dei costruttori»?
Crei istanze con costruttori parametrizzati. 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 «Definizione dei costruttori»?
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
- Definizione dei costruttori
- Concatenamento dei costruttori con this
- Inizializzatori di oggetti e raccolte
- Costruttori statici