Sobes.tech
Back to questions
Junior — Middle
62

В чем заключается предназначение интерфейса IDisposable в .NET и как его использовать?

Answer from AI

sobes.tech AI

Интерфейс IDisposable в .NET предназначен для освобождения неуправляемых ресурсов (например, файловых дескрипторов, соединений с базой данных) вручную, когда объект больше не нужен.

Использование:

  • Класс реализует IDisposable и переопределяет метод Dispose(), в котором освобождает ресурсы.
  • В коде, где используется объект, вызывается Dispose() явно или применяется конструкция using, которая гарантирует вызов Dispose() даже при исключениях.

Пример:

class ResourceHolder : IDisposable
{
    private bool disposed = false;
    public void Dispose()
    {
        if (!disposed)
        {
            // Освобождение ресурсов
            disposed = true;
            GC.SuppressFinalize(this);
        }
    }

    ~ResourceHolder()
    {
        Dispose();
    }
}

// Использование
using (var resource = new ResourceHolder())
{
    // работа с ресурсом
}
// Здесь автоматически вызовется Dispose()