Конструктор базового класса всегда вызывается. Или, точнее, один конструктор базового класса. Если вы не укажете, какой из них (используя зарезервированное слово base
), вызывается конструктор по умолчанию базового класса (то есть тот, у которого нет аргументов). Если базовый класс не имеет конструктора без аргументов, возникает ошибка компилятора. С ключевым словом base
вы указываете, что хотите вызвать определенный конструктор. Вот несколько простых примеров:
public class Base
{
private int _a;
public Base() // default ctor
{_a = 0;}
public Base(int a) // a ctor with an argument
{_a = a;}
}
public class Derived : Base
{
public Derived() : base(2) // call the ctor with argument "2"
{}
public Derived(bool b) // uses the ctor without argument of the base class (_a will stay 0)
{
}
}
Ключевое слово base
здесь используется в качестве заполнителя c для имени базового класса. Единственное другое синтаксически допустимое слово - this
(если вы хотите вызвать конструктор того же класса )