Карточка Junior GC, IDisposable и производительность спрашивают часто обновлено
Когда реализовывать IDisposable
Вопрос
Когда классу нужен IDisposable?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
- Класс владеет неуправляемым ресурсом (дескриптор, сокет) или другими IDisposable (поток, DbContext, HttpResponseMessage). - Нужно детерминированно отписаться от событий или остановить таймер. Потребитель вызывает Dispose через using.
Ответ
- Класс владеет неуправляемым ресурсом (дескриптор, сокет) или другими
IDisposable(поток,DbContext,HttpResponseMessage). - Нужно детерминированно отписаться от событий или остановить таймер.
Потребитель вызывает
Disposeчерезusing. Повторный вызовDisposeдолжен быть безопасным.
Разбор
IDisposable не освобождает управляемую память, это делает GC. Он про ресурсы, которые GC не знает, как освободить вовремя.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.