Работа методов New и Finalize в иерархии классов

Обновлен: Ноябрь 2007

При создании экземпляра класса среда CLR пытается выполнить процедуру с именем New, если она существует в этом объекте. New представляет тип процедуры с именем constructor, которая используется для инициализации новых объектов до выполнения любого другого кода в объекте. Конструктор New может использоваться для открытия файлов, подключения к базам данных, инициализации переменных и решения других задач, которые необходимо выполнить до использования объекта.

При создании экземпляра производного класса сначала выполняется конструктор Sub New базового класса, а затем выполняются конструкторы в производных классах. Это происходит, потому что первая строка кода в конструкторе Sub New использует синтаксис MyBase.New() для вызова конструктора класса, стоящего непосредственно над заданным в иерархии классов. Затем в иерархии классов для каждого класса вызывается конструктор Sub New, пока не будет достигнут конструктор базового класса. На этом этапе выполняется код в конструкторе базового класса, а затем выполняется код в каждом конструкторе во всех производных классах. В производных классах, дальше всего отстоящих от базового, код выполняется в последнюю очередь.

Конструкторы и наследование

Когда объект больше не нужен, среда CLR перед очисткой памяти вызывает метод Finalize для этого объекта. Метод Finalize называется деструктором (destructor), так как он выполняет задачи по очистке, такие как сохранение данных о состоянии, закрытие файлов и подключений к базам данных и другие задачи, которые необходимо выполнить до освобождения объекта.

Конструкторы и наследование 2

См. также

Основные понятия

Время существования: создание и уничтожение объектов