C# - Главная Пространство имен
► System ► Microsoft Для учеников (начинающих)
► Видео уроки ► Обучение ► Примеры программ ► Секреты в Си Шарп Для профессионалов
► Обучение ► Примеры программ ► Задачки - для тебя! |
Конструкторы и деструкторы C#
Существует специальная категория методов, отвечающих за такие действия с объектами, как инициализация, присваивание, управление памятью и преобразование типов. Такие методы называются конструкторами. Они вызываются компилятором неявно каждый раз, когда объект класса создается оператором new. В объявлении конструктора его имя совпадает с именем класса. Конструкторов в классе может быть множество благодаря понятию перегрузки функции. Для конструктора типично копирование предоставляемых ему параметров в поля объекта, этим могут ограничиваться его функции. Поскольку параметры и поля относятся к одним и тем же данным, то принято именовать параметры начальными буквами названий полей (если при этом не возникнет конфликта имен). Конструктор имеет следуюий вид: <имя_класса>() { //тело конструктора } Все классы имеют конструктор независимо от того определен он или нет. В С# по умолчанию предусмотрен конструктор, который присваивает нулевые значения всем переменным экземпляра (для переменных обычного типа) и null (для переменных ссылочного типа). Но если конструктор явно объявлен в классе, то конструктор по умолчанию использоваться не будет. Пример: using System; class NewClass { public int a; public NewClass() { a = 100; } } class ConstrDemo { public static void Main() { NewClass c1 = new NewClass(); Console.WriteLine(c1.a); } } Функции обратные функциям конструктора выполняют деструкторы. Они предназнычены для освобождения памяти от объектов класса. Однако в С# имеется более эффективный механизм для этого, он называется «сборкой мусора». Когда в С#-программе отсутствует обращение к объекту, то он рассматривается как не использующийся более, и система автоматически без участия программиста, освобождает занимаемую им память, которая в дальнейшем может быть выделена под другие объекты. «Сборка мусора» периодически осуществляется в ходе всей программы. В С# все же предусмотрена возможность создания деструктора, который удаляет объект перед «сборкой мусора». Он имеет следующую конструкцию: ~ <имя_класса> () { //тело деструктора } Деструктор вызывается во всех случаях, когда объект должен быть удален из памяти.
Просмотров: 15460 |