IDisposable задаёт метод Dispose для явного освобождения ресурсов. Конструкция using гарантирует его вызов при выходе из области, в том числе при исключении, через логику try/finally.
Что такое IDisposable, с какой конструкцией он обычно используется и во что разворачивается using?
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 любого случая.