Специальными методами класса, которые вызываются при создании объектов класса, являются конструкторы.
Имя конструктора или нескольких перегруженных конструкторов должно совпадать с именем класса. В отличие от других методов, в заголовке конструктора не указывается тип результата (даже void).
Если программист не определяет конструктор класса, то к классу автоматически добавляется конструктор по умолчанию — конструктор без параметров. Однако следует помнить, что если программист сам создаст хотя бы один конструктор, то автоматического добавления конструктора без параметров не происходит.
Чаще всего в классе описываются собственные конструкторы (и, как правило, не один) с помощью разных вариантов инициализации полей (отличающиеся набором формальных параметров). Например, в классе Person можно описать следующие конструкторы:
public Person () {}.
public Person (string n) { name = n;}.
public Person (string n, int a, double s) {.
name = n; age = a; salary = s;
}.
В данном примере в первой строке описывается конструктор без параметров, во второй строке описывается конструктор с одним параметром типа string. Третий конструктор имеет три параметра.
Создание объектов чаще всего происходит при объявлении ссылочных переменных в момент их инициализации. Рассмотрим создание трех объектов класса Person:
Person p1 = new Person (), p2 = new Person ();
Person p3 = new Person ('TleTpoBa");
Объекты p1, p2 и р3 класса Person объявляются с инициализацией, задаваемой унарной операцией new, которой в качестве параметра передается конструктор класса Person.
В языке C++, кроме конструкторов, также используются специальные методы — деструкторы (они начинаются с символа после которого стоит имя класса, например ~Person ()), которые вызываются при удалении объектов. Но в C# задачей удаления объектов занимается специальный компонент среды CLR — сборщик мусора, поэтому деструкторы не используются.