Если у вас есть один экземпляр этого объекта в течение срока действия вашего приложения, почему вы заботитесь об его утилизации?Когда приложение закрывается, его пространство памяти освобождается ОС, эффективно удаляя весь набор приложений и любые ресурсы, которые оно могло создать.
IDisposable
(явное удаление) имеет смысл для типов объектов, которые потребляютзначительный объем памяти и может создаваться много раз (обычно в быстрой последовательности) в течение срока службы вашего приложения;например, bitmap
объекты, которые выделяют большой буфер для данных изображения, stream
s и другие данные, переносящие / манипулирующие объектами, которые вы бы создавали много раз.Вид вещей, которые вы бы положили в блок using
.
Вот практическое правило:
Вам нужно IDisposable
только в том случае, если: каждый экземпляр объекта потребляет значительный объем памяти (например, десятки мегабайт), вам нужно создать и сохранить многоэкземпляры сразу, или вам нужно создать много экземпляров в очень быстрой последовательности.В этих случаях вы извлечете выгоду из утилизации объекта вручную.Если они не соответствуют вашему варианту использования, сборщик мусора выполнит более чем достаточную работу по очистке неиспользуемых ресурсов.
Должен ли я реализовать IDisposable на синглтоне?
Спасибо @Broots за полезную ссылку.