Looking for c# Keywords? Try Ask4Keywords

C# Language Конструктор по умолчанию


пример

Когда тип определен без конструктора:

public class Animal
{
}

то компилятор генерирует конструктор по умолчанию, эквивалентный следующему:

public class Animal
{
    public Animal() {}
}

Определение любого конструктора для типа будет подавлять генерацию конструктора по умолчанию. Если тип был определен следующим образом:

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

то Animal может быть создано только путем вызова объявленного конструктора.

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

Во втором примере компилятор отобразит сообщение об ошибке:

«Animal» не содержит конструктор, который принимает 0 аргументов

Если вы хотите, чтобы класс имел как конструктор без параметров, так и конструктор, который принимает параметр, вы можете сделать это, явно реализуя оба конструктора.

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

Компилятор не сможет создать конструктор по умолчанию, если класс расширяет другой класс, который не имеет конструктора без параметров. Например, если бы у нас было классное Creature :

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

то Animal определяется как class Animal : Creature {} не будет компилироваться.