Вызов base
В объявлении конструктора производного типа после
списка параметров пишут двоеточие и base с
аргументами для подходящего конструктора базового
класса. Если base не указан явно, компилятор
вызывает конструктор базы без параметров, когда
он доступен. Вызов base должен быть первой
инструкцией в теле конструктора, если он есть.
Синтаксис
public Производный(тип param) : base(param)
{
// дополнительная инициализация
}
Пример
Давайте передадим строку в конструктор базы:
using System;
class BaseText
{
public string Text;
public BaseText(string text)
{
Text = text;
}
}
class DerivedText : BaseText
{
public DerivedText(string text) : base(text)
{
}
}
class Program
{
static void Main()
{
var item = new DerivedText("abcde");
Console.WriteLine(item.Text);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызовем base с числом и допишем
поле в производном классе:
using System;
class BaseNum
{
public int Value;
public BaseNum(int value)
{
Value = value;
}
}
class ExtraNum : BaseNum
{
public int Extra;
public ExtraNum(int value, int extra) : base(value)
{
Extra = extra;
}
}
class Program
{
static void Main()
{
var item = new ExtraNum(3, 2);
Console.WriteLine($"{item.Value} {item.Extra}");
}
}
Результат выполнения кода:
3 2
Пример
Давайте сочетаем base с this
в разных конструкторах одного наследника:
using System;
class Root
{
public string Head;
public Root(string head)
{
Head = head;
}
}
class Branch : Root
{
public string Tail;
public Branch() : this("12", "345")
{
}
public Branch(string head, string tail) : base(head)
{
Tail = tail;
}
}
class Program
{
static void Main()
{
var branch = new Branch();
Console.WriteLine(branch.Head + branch.Tail);
}
}
Результат выполнения кода:
"12345"
Смотрите также
-
наследование,
которое связывает производный и базовый тип -
цепочка this,
которая вызывает другой конструктор того же класса -
конструктор,
который объявляют и в базе, и в наследнике -
тип
int,
который часто передают в конструктор базы