Объекты и их жизненный цикл. Создание и уничтожение объектов.

В объектно-ориентированном языке при связывании кода и данных создается объект. Код, данные или обе эти составляющие объекта могут быть закрытыми внутри него или открытыми. Закрытый код или закрытые данные известны лишь остальной части этого объекта и доступны только ей. Это означает, что к закрытому коду или данным не может получить доступ никакая другая часть программы, существующая вне этого объекта. Если код или данные являются открытыми, к ним (несмотря на то, что они определены внутри объекта) могут получить доступ другие части программы.

Объекты — это экземпляры класса. Класс — это логическая абстракция. О ее реализации нет смысла говорить до тех пор, пока не создан объект класса, и в памяти не появилось физическое его представление. Данные содержатся в переменных экземпляров, а код — в методах.

Рассмотрим создание объекта на примере класса Person.

Person pers = new Person;

Оператор new вызывает конструктор класса Person. Для pers создается ссылка со значением null. Затем в динамической памяти создается объект. Ссылка привязывается к созданному объекту. Если объект не используется, на него нет ни одной ссылки, то сборщик мусора его удаляет (освобождает память, занимаемую данным объектом). Для корректного удаления сборщик мусора вызывает деструктор, который проверяет, например, все ли ресурсы, используемые объектом, освобождены.

Также можно для уничтожения объектов использовать методы Finalize() и Dispose().