Встречается на собеседованиях • сегодня
В чём разница между Dispose и Finalize
Dispose и Finalize — механизмы освобождения ресурсов в .NET, но работают они по-разному:
- Dispose:
- Реализуется через интерфейс
IDisposable. - Вызывается явно (через
usingили.Dispose()). - Освобождает неуправляемые ресурсы (файлы, соединения) сразу.
- Пример:
csharp
using (var file = File.Open("test.txt", FileMode.Open)) { // работа с файлом } // Dispose вызовется автоматически
- Реализуется через интерфейс
- Finalize:
- Определяется через деструктор (
~ClassName). - Вызывается сборщиком мусора (GC) перед удалением объекта.
- Не гарантирует моментальное освобождение ресурсов.
- Пример:
csharp
class ResourceHolder { ~ResourceHolder() { // cleanup (вызовется GC) } }
- Определяется через деструктор (
Итог: Dispose — для детерминированного освобождения, Finalize — резервный вариант, если Dispose не вызвали. Лучше использовать оба, реализуя IDisposable с паттерном освобождения.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы