Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое паттерн IDisposable, как работают методы Dispose и блок Finalize?
IDisposable реализуют классы, владеющие неуправляемыми ресурсами (файлы, сокеты). Метод Dispose() вызывается вручную или через using для немедленного освобождения. Finalize (деструктор) запускается GC при сборке, если Dispose не был вызван, но не гарантирует время выполнения. Реализация часто сочетает оба: в finalizer’е вызывают Dispose(false), а в Dispose() — GC.SuppressFinalize(this).
Когда нужно вручную управлять памятью (неуправляемые ресурсы, IDisposable)?
Вручную управлять памятью нужно при:
Работе с файлами/сетью
Использовании нативных библиотек
Графических ресурсах
Используйте IDisposable и using.
Сталкивался ли с интерфейсом IDisposable? Для чего он используется?
IDisposable используется для освобождения неуправляемых ресурсов (файлы, соединения с БД). Реализует метод Dispose(), который вызывается вручную или через using.
Зачем нужны и в чём разница между финализатором и интерфейсом IDisposable?
IDisposable — это детерминированный механизм, позволяющий программисту явно и немедленно освободить ресурсы (например, закрыть файл) с помощью метода Dispose(). Финализатор — это недетерминированный механизм "страховки", который сборщик мусора вызовет когда-то в будущем для освобождения ресурсов, если программист забыл это сделать сам. Основное правило: для освобождения неуправляемых ресурсов всегда используйте IDisposable, а финализатор добавляйте только как резервный вариант.
Рейтинг:
2
Сложность:
6
Рейтинг:
1
Сложность:
7
Рейтинг:
1
Сложность:
6
Рейтинг:
2
Сложность:
8