Урок 1. Конструкторы

На самом деле, когда мы создаём экземпляр класса, мы вызываем специальный метод, отвечающий за его конструирование экземпляра в памяти. Данный вид методов получили особое название – конструкторы класса.

Конструктор класса (constructor, иногда сокращают ctor) — специальный блок инструкций, вызываемый при создании объекта.

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

public MyClass MyClass() {}

разработчики языка C# решили, что дважды писать имя класса в конструкторе не нужно, достаточно будет и одного раза. Поэтому все конструктора в классах выглядят следующим образом:

public «имя класса где находится конструктор»() {}

например:

public MyClass() {}

6

Конструктор по умолчанию – это конструктор, который не принимает параметров.

Пользовательский конструктор – это конструктор принимающий

Задача конструктора по умолчанию – инициализация полей значениями по умолчанию.

Задача пользовательского конструктора – инициализация полей предопределенными пользователем значениями.

Если в теле класса не определен явно ни один конструктор, то всегда используется «невидимый» конструктор по умолчанию.

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

Для вызова пользовательского конструктора нужно при создании экземпляра класса в аргументных скобки передать соответствующие параметры:

7

Примечание: Имя конструктора всегда совпадает с именем класса. Для создания конструктора в Visual Studio можно использовать snippet ctor.

Рекомендации:

  • всегда создавайте явно конструктор по умолчанию.
  • используйте то же самое название для параметров конструктора и поля или свойства, если параметры конструктора используются для того чтобы инициализировать поле или установить свойство.

Примечание: когда имя параметра метода и имя поля класса совпадают, при попытке обращении к полю (написав только имя) в методе компилятор воспримет такое обращение не к полю, а к локальной переменной метода. Что бы указать, что нужно обратиться к полю нужно использовать ключевое слово this и через точку указать имя поля (например, this.name). Ключевое слово this говорит компилятору, что будет происходить обращение к себе же (к члену класса в котором оно используется).