C# Academy · Lezione

Definizione dei costruttori

Crei istanze con costruttori parametrizzati.

Lezione 1 di 413 passaggi

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);
    }
}
Gratis per iniziare

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

  1. Definizione dei costruttori
  2. Concatenamento dei costruttori con this
  3. Inizializzatori di oggetti e raccolte
  4. Costruttori statici
← Torna a C# Academy