Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / Лекции КБ ИБАС 1 курс 2 семестр / лекция9 Безопасность 2018.pptx
Скачиваний:
14
Добавлен:
08.12.2019
Размер:
155.99 Кб
Скачать

Конструктор с пустым списком формальных параметров называется конструктором по умолчанию.

В C# все классы имеют конструкторы по умолчанию – независимо от того, есть ли явное определение.

Такие конструкторы обеспечивают автоматическую инициализацию переменных экземпляра.

Если в составе класса определен конструктор по умолчанию, то выполняться будет именно он.

Можно объявить несколько перегруженных конструкторов – с разными списками формальных параметров.

Выбор одного из конструкторов ведется по тем же правилам, что и для обычных методов.

21

Вызов конструктора

Вызов конструктора для создания объекта – экземпляра класса :

class_name obj_name=

new class_name (fact_par_list);

obj_name – идентификатор объекта,

new - ключевое слово, после которого следует

идентификатор конструктора

со списком фактических параметров, которые используются для инициализации переменных экземпляра.

22

правая часть конструкции – это оператор new для создания экземпляра класса.

оператор обеспечивает

динамическое выделение памяти для объекта и

возвращает ссылку на соответствующую область памяти,

которая записывается в переменную obj_name.

Примечание

Если вызывается конструктор по умолчанию (без параметров),

круглые скобки все равно обязательны, как и для методов.

23

Деструкторы

Сборка мусора

Освобождение ранее выделенной динамической памяти во многих ЯП выполняется вручную.

Например, в С++ для этого используют оператор delete.

В C# для этих целей реализован поддерживаемый средой исполнения .NET

механизм сборки мусора

24

суть механизма СМ (GC):

Когда в программе к объекту нет обращений

(то есть исчезают ссылки на объект), то он рассматривается как более не использующийся (недоступный).

Система автоматически освобождает память, занимаемую более не использующимися объектами.

Освобожденная память может использоваться для хранения других объектов.

Сборка мусора осуществляется периодически в ходе выполнения программы.

25

Cлучаи, когда объект становится недоступным:

Всем ссылкам на объект присвоено значение null.

Ссылочной переменной (единственной, хранящей ссылку на объект)

присвоено другое ссылочное значение.

Единственная ссылка на данный объект хранится в объекте, который стал недоступным.

Единственная ссылка на объект хранится в локальной переменной и выполнение вышло за границы области ее определения.

26

Сборка мусора решает две основные задачи:

обнаруживает недоступные объекты и

восстанавливает занимаемую ими память.

Сборка мусора происходит в фоновом режиме

влюбой программе на C#, автоматически обнаруживая и удаляя все недоступные объекты.

НО такое удаление происходит не сразу.

Причина запаздывания – в экономии процессорного времени.

Но алгоритмы сборки мусора обеспечивают поддержку свободной памяти для размещения новых объектов.

Можно явно запустить сборку мусора, вызвав статический метод Collect класса System.GC:

System.GC.Collect();

27

Такой прием используется, чтобы

не тормозить работу программы в неподходящий момент,

когда сборка мусора может запуститься автоматически.

Для этого ее запускают заранее явным способом.

Ограниченные возможности деструкторов в C#

Итак, в C#, можно не заботиться об освобождении памяти при завершении работы с объектами.

НО предусмотрена возможность определения деструктора класса (любой класс имеет деструктор по умолчанию,

даже если он не определен явно).

Синтаксис определения деструктора :

~class_name ( )

{

statements

}

28

!! отсутствует

тип возвращаемого результата (как и у конструктора!) и

уровень доступа.

Основное отличие деструктора C# от деструктора С++

в C# деструктор может быть вызван только при сборке мусора

в С++ деструктор вызывается при выходе за пределы области видимости, в которой был создан данный объект).

Поэтому невозможно точно определить, когда будет выполняться код деструктора.

29

Алгоритм использования деструкторов

состоит из следующих шагов:

При сборке мусора различаются

объекты, содержащие явное объявление деструктора, и

объекты без таких объявлений.

При обнаружении недоступного объекта без деструктора он удаляется

свысвобождением памяти.

При обнаружении объекта

сдеструктором ссылка на этот объект помещается в специальный список объектов, ожидающих выполнения их деструкторов.

30