Утилизировать объект с очисткой через отражение
В настоящее время я пытаюсь реализовать свое первое избавление от некоторых из моих объектов, и мне было интересно, если это плохая идея, чтобы просмотреть все свойства на отражение и просто установить их на ноль?
2 ответа
Внедрение IDisposable
не означает, что вы должны установить все поля null
, GC позаботится об этом, когда они не достижимы от корневых объектов.
И настройка null
ничего не будет делать, пока объект не будет в памяти, пока GC не заметит, что он не справился с какими-либо ссылками.
ИМО, вы не можете увидеть исчерпывающий ответ больше, чем это Правильное использование интерфейса IDisposable
Установка нуля помогает только тогда, когда осталась только одна управляемая ссылка, хотя она вам не нужна, но вам нужно сохранить инкапсулирующий тип, тогда вы установите ссылку на null
, В противном случае, если сам тип инкапсуляции недоступен, тогда настройка null
не имеет никакого смысла.
Да, это плохая идея.
Прежде всего, некоторые из ваших свойств могут быть классами, которые реализуют IDisposable
интерфейс, так что вам придется вызвать Dispose
Метод первый на них.
Тогда, если одно из ваших свойств является классом, который зависит от COM-компонентов или использует их, вы должны правильно его утилизировать, иначе у вас возникнут утечки памяти.