Что такое IDisposable, с какой конструкцией он обычно используется и во что разворачивается using?

IDisposable задаёт метод Dispose для явного освобождения ресурсов. Конструкция using гарантирует его вызов при выходе из области, в том числе при исключении, через логику try/finally.

Короткий ответ

Что ответить на собеседовании

IDisposable задаёт метод Dispose для явного освобождения ресурсов. Конструкция using гарантирует его вызов при выходе из области, в том числе при исключении, через логику try/finally.

Подробный разбор

Ответ с пояснениями

IDisposable задаёт метод Dispose для явного освобождения ресурсов. Конструкция using гарантирует его вызов при выходе из области, в том числе при исключении, через логику try/finally.

Упрощённая схема для ссылочного ресурса:

var resource = OpenResource();
try
{
    Use(resource);
}
finally
{
    resource?.Dispose();
}

Using не освобождает управляемую память немедленно — оно выполняет договорённую очистку ресурса. IAsyncDisposable и await using предназначены для асинхронной очистки. Для структур и конкретных форм using разворачивание имеет дополнительные детали, поэтому приведённая схема не является буквальным IL любого случая.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее