Поскольку в .NET есть сборщик мусора, зачем нам финализаторы / деструкторы / dispose-pattern? - PullRequest
67 голосов
/ 01 декабря 2008

Если я правильно понимаю, среда выполнения .net всегда будет очищаться после меня. Поэтому, если я создаю новые объекты и прекращаю ссылаться на них в своем коде, среда выполнения очистит эти объекты и освободит занятую ими память.

Так как это так, почему некоторым объектам нужен деструктор или метод удаления? Разве среда выполнения не очищается после них, когда на них больше нет ссылок?

Ответы [ 12 ]

0 голосов
/ 01 декабря 2008

В основном для неуправляемого кода и взаимодействия с неуправляемым кодом. «Чистый» управляемый код никогда не должен нуждаться в финализаторе. С другой стороны, одноразовые - это просто удобный шаблон, который заставляет что-то высвобождаться, когда вы закончите с этим.

0 голосов
/ 01 декабря 2008

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

...