Книга: C# для профессионалов. Том II
Списки инициализации конструктора
Списки инициализации конструктора
Конструкторы C# могут иметь элементы, которые выглядят как списки инициализации конструктора C++. Однако в C# такой список содержит только максимум один член и называется инициализатором конструктора. Элемент в инициализаторе должен быть либо конструктором непосредственного базового класса, либо другим конструктором того же класса. Синтаксис этих двух вариантов использует ключевые слова base
и this
соответственно:
class MyClass : MyBaseClass {
MyClass(int X)
: base(X) // выполняет конструктор MyBaseClass с одним параметром
{
// здесь другая инициализация
}
MyClass()
: this(10) // выполняет конструктор MyClass с одним параметром,
// передавая в него значение 10
{
// здесь другая инициализация
}
Если явно не задан никакой список инициализации конструктора, то компилятор будет неявно использовать список из элемента base()
. Другими словами, инициализатор по умолчанию вызывает конструктор по умолчанию базового класса. Это поведение совпадает с C++.
В отличие от C++ нельзя поместить переменные члены в список инициализации конструктора. Однако это только вопрос синтаксиса, так как эквивалент C# должен отметить свои начальные значения в определении класса.
Более серьезным различием является тот факт, что можно поместить только один иной конструктор в список. Это влияет на способ разработки конструкторов, хотя несомненно полезно, так как заставляет использовать хорошо определенную и эффективную парадигму организации конструкторов. Эта парадигма указана в приведенном выше коде. Все конструкторы следуют единому порядку, в котором выполняются различные конструкторы.
- Стандартные списки
- Отправка данных в списки SharePoint по электронной почте
- Списки, запятые и командные строки
- Нумерованные и маркированные списки
- Списки
- 5 Система Цикл: списки дел и расписания
- 9.5.3. Имя конструктора
- О том, как ассоциации могут спутать карты и списки дел
- Ссылки и списки литературы
- Списки рассылки и группы новостей, посвященные вопросам защиты
- Приложение А Связанные списки
- Списки и деревья областей памяти