Главная arrow Язык программирования C# arrow C# Полное руководство Герберт Шилдт arrow Конструкторы C# Полное руководство Герберт Шилдт

Конструкторы C# Полное руководство Герберт Шилдт

В приведенных выше примерах программ переменные экземпляра каждого объекта типа Building приходилось инициализировать вручную, используя, в частности, следующую последовательность операторов:
   house.Occupants = 4;
   house.Area = 2500;
   house.Floors = 2;

Такой прием обычно не применяется в профессионально написанном коде С#. Кроме того, он чреват ошибками (вы можете просто забыть инициализировать одно из полей). Впрочем, существует лучший способ решить подобную задачу: воспользоваться конструктором.
Конструктор инициализирует объект при его создании. У конструктора такое же имя, как и у его класса, а с точки зрения синтаксиса он подобен методу. Но у конструкторов нет возвращаемого типа, указываемого явно. Ниже приведена общая форма конструктора.
доступ имя_класса(список_параметров) {
   // тело конструктора
}

Как правило, конструктор используется для задания первоначальных значений переменных экземпляра, определенных в классе, или же для выполнения любых других установочных процедур, которые требуются для создания полностью сформированного объекта. Кроме того, доступ обычно представляет собой модификатор доступа типа public, поскольку конструкторы зачастую вызываются в классе. А список_параметров может быть как пустым, так и состоящим из одного или более указываемых параметров.
У всех классов имеются конструкторы, независимо от того, определите вы их или нет, поскольку в C# автоматически предоставляется конструктор, используемый по умолчанию и инициализирующий все переменные экземпляра их значениями по умолчанию. Для большинства типов данных значением по умолчанию является нулевое, для типа bool — значение false, а для ссылочных типов — пустое значение. Но как только вы определите свой собственный конструктор; то конструктор по умолчанию больше не используется.
Ниже приведен простой пример применения конструктора.

// Простой конструктор.

using System;

class MyClass {
   public int x;

   public MyClass() {
      x = 10;
   }
}

class ConsDemo {
   static void Main() {
      MyClass t1 = new MyClass ();
      MyClass t2 = new MyClass();

      Console .WriteLine (t1. x + " " + t2.x);
   }
}

В данном примере конструктор класса MyClass имеет следующий вид:
public MyClass () {
   х = 10;
}

Обратите внимание на то, что этот конструктор обозначается как public. Дело в том, что он должен вызываться из кода, определенного за пределами его класса. В этом конструкторе переменной экземпляра класса MyClass присваивается значение 10. Он вызывается в операторе new при создании объекта. Например, в следующей строке:
MyClass t1 = new MyClass();
конструктор MyClass () вызывается для объекта tl, присваивая переменной его экземпляра t1.х значение 10. То же самое происходит и для объекта t2. После конструирования переменная t2. х будет содержать то же самое значение 10. Таким образом, выполнение приведенного выше кода приведет к следующему результату:
10 10