This article has been localized into Russian by the community.
Конструкторы и деструкторы
Конструкторы - это специальные методы, используемые при создании экземпляра класса. Конструктор не может ничего возвращать, поэтому нет необходимости определять для него возвращаемый тип. Обычно метод определяется следующим образом:
public string Describe()
Конструктор может быть определен так:
public Car()
В нашем примере для этой главы, у нас есть Класс автомобиля, с конструктором, который принимает строку в качестве аргумента. Конечно, конструктор также может быть перегружен, т. е. у нас может быть несколько конструкторов с одинаковым именем, но разными параметрами. Вот пример:
public Car()
{
}
public Car(string color)
{
this.color = color;
}
Конструктор может вызвать другой конструктор, который пригодится в нескольких ситуациях. Вот пример:
public Car()
{
Console.WriteLine("Constructor with no parameters called!");
}
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
Если вы запустите этот код, вы увидите, что конструктор без параметров вызывается первой. Это может использоваться для создания различных объектов для класса в конструкторе по умолчанию, который может быть вызван из других конструкторов из класса. Вы также можете это сделать в конструкторе, принимающем параметры. Вот простой пример:
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
public Car(string param1, string param2) : this(param1)
{
}
Если вы вызываете конструктор, который принимает 2 параметра, первый параметр будет использоваться для вызова конструктора, принимающего 1 параметр.
Деструкторы
Так как C# использует сборщик мусора, то, учитывая, что фреймворк освободит объекты, которые вы больше не используете, могут быть случаи, когда вам нужно сделать некоторую ручную очистку. Деструктор, метод, вызываемый после удаления объекта, может использоваться для очистки ресурсов, используемых объектом. Деструкторы не очень похожи на другие методы в C#. Вот пример деструктора для нашего класса автомобилей:
~Car()
{
Console.WriteLine("Out..");
}
После уборки объекта сборщиком мусора вызывается этот метод.