C# Language Costruttore predefinito


Esempio

Quando un tipo è definito senza un costruttore:

public class Animal
{
}

quindi il compilatore genera un costruttore predefinito equivalente al seguente:

public class Animal
{
    public Animal() {}
}

La definizione di qualsiasi costruttore per il tipo sopprimerà la generazione predefinita del costruttore. Se il tipo è stato definito come segue:

public class Animal
{
    public Animal(string name) {}
}

quindi un Animal può essere creato solo chiamando il costruttore dichiarato.

// This is valid
var myAnimal = new Animal("Fluffy");
// This fails to compile
var unnamedAnimal = new Animal();

Per il secondo esempio, il compilatore mostrerà un messaggio di errore:

'Animale' non contiene un costruttore che accetta 0 argomenti

Se si desidera che una classe abbia sia un costruttore senza parametri sia un costruttore che accetta un parametro, è possibile farlo implementando esplicitamente entrambi i costruttori.

public class Animal
{
    
    public Animal() {} //Equivalent to a default constructor.
    public Animal(string name) {}
}

Il compilatore non sarà in grado di generare un costruttore predefinito se la classe estende un'altra classe che non ha un costruttore senza parametri. Ad esempio, se avessimo una Creature classe:

public class Creature
{
    public Creature(Genus genus) {}
}

quindi Animal definito come class Animal : Creature {} non verrebbe compilato.