Утилизировать объект с очисткой через отражение

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

2 ответа

Решение

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

И настройка null ничего не будет делать, пока объект не будет в памяти, пока GC не заметит, что он не справился с какими-либо ссылками.

ИМО, вы не можете увидеть исчерпывающий ответ больше, чем это Правильное использование интерфейса IDisposable

Установка нуля помогает только тогда, когда осталась только одна управляемая ссылка, хотя она вам не нужна, но вам нужно сохранить инкапсулирующий тип, тогда вы установите ссылку на null, В противном случае, если сам тип инкапсуляции недоступен, тогда настройка null не имеет никакого смысла.

Да, это плохая идея.

Прежде всего, некоторые из ваших свойств могут быть классами, которые реализуют IDisposable интерфейс, так что вам придется вызвать Dispose Метод первый на них.

Тогда, если одно из ваших свойств является классом, который зависит от COM-компонентов или использует их, вы должны правильно его утилизировать, иначе у вас возникнут утечки памяти.

Другие вопросы по тегам