В методе Dispose нет ничего волшебного, он похож на любой другой метод. Вызов метода Dispose не выполняет никакой очистки в фоновом режиме и не изменяет состояние объекта, он просто выполняет то, что вы поместили в метод. Что особенного в этом то, что он определен в интерфейсе IDisposable, так что это стандартный способ сообщить объекту, что он очищает свои ресурсы.
В методе Dispose объект должен заботиться обо всех неуправляемых ресурсах, таких как соединения с базой данных и объекты Font.
Когда вы освобождаете объект, вам не нужно беспокоиться о каких-либо управляемых ресурсах. Структура типа байтового массива полностью обрабатывается сборщиком мусора, и вы можете просто оставить его в объекте, когда отпустите его. Вам не нужно устанавливать никаких ссылок на null
, когда вы больше не используете объект, сборщик мусора найдет наилучшее время для его удаления и любых объектов, на которые он ссылается.
Сборщик мусора обычно работает лучше всего, когда вы оставляете его в покое, нет необходимости сообщать ему, когда он должен собирать неиспользуемый объект. Он сам выяснит, когда это должно быть сделано, и, как правило, делает это лучше, чем вы, поскольку у него есть доступ к большому количеству информации о состоянии памяти и состоянии компьютера, которого нет в вашем коде.
Вам может показаться, что вы должны стараться поддерживать низкое использование памяти, но само по себе это не дает никаких преимуществ. Компьютер не работает лучше, потому что у него осталось больше свободной памяти. Напротив, если ваш код пытается выполнить очистку или заставляет сборщик мусора делать что-либо, он выполняет очистку, когда он должен быть занят чем-то более важным. Сборщик мусора очистит неиспользуемый объект, если он понадобится.