This article has been localized into Italian by the community.
Costruttori e distruttori
I costruttori sono metodi speciali che vengono utilizzati durante la fase di istanziazione di una classe. Un costruttore non può mai avere un valore di ritorno e questo è il motivo per cui non va mai definito un tipo di ritorno per i costruttori. Un metodo normale è difinito in questo modo:
public string Describe()
Un costruttore può essere definito nel modo seguente:
public Car()
Nell'esempio usato in questo capitolo, abbiamo una classe Car, con un costruttore che accetta una stringa come argomento. Ovviamente un costruttore può essere sottoposto a overload che significa che possiamo avere diversi costruttori con lo stesso nome ma con differenti parametri. Ecco di seguito un esempio:
public Car()
{
}
public Car(string color)
{
this.color = color;
}
Un costruttore può chiamare un altro costruttore. Questa caratteristica può essere molto utile in diverse situazione. Ecco un esempio:
public Car()
{
Console.WriteLine("Constructor with no parameters called!");
}
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
Se lanci questo codice, vedrai che il costruttore senza parametri è chiamato per primo. Questo meccanismo può essere usato per istanziare diversi oggetti della classe utilizzando il costrutture di default che può essere chiamato a sua volta da altri costruttori della stessa classe. Se il costruttore che desideri chiamare ha dei parametri puoi sfruttare ugualmente questo meccanismo. Ecco un esempio:
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
public Car(string param1, string param2) : this(param1)
{
}
Se chiami il costruttore che ha 2 parametri, il primo parametro sarà utilizzato per invocare il costruttore con 1 parametro.
Distruttori
Nonostante il C# possieda un meccanismo di garbage collection, in cui è il framework che si incarica di liberare gli oggetti che non sono più utilizzati, ci possono essere delle situazioni in cui si ha la necessità di liberare manualmente la memoria utilizzata dagli oggetti. I distruttori non assomigliano molto agli altri metodi in C#. Qui sotto un esempio di un distruttore per la nostra classe Car:
~Car()
{
Console.WriteLine("Out..");
}
Un volta che l'oggetto è liberato dal garbace collector, viene chiamato questo metodo.