Встречается на собеседованиях • сегодня

В чём разница между 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 с паттерном освобождения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы