Назад к вопросам
Middle+
3
Для чего нужен IDisposable?
Компании, где спрашивали
Gravilink
Ответ от нейросети
sobes.tech AI
Интерфейс IDisposable в C# используется для освобождения неуправляемых ресурсов, таких как файловые дескрипторы, сетевые соединения или объекты COM, когда они больше не нужны.
Реализуя IDisposable, класс предоставляет метод Dispose(), который вызывается для явного освобождения ресурсов, предотвращая утечки памяти и другие проблемы.
Пример использования:
public class ResourceHolder : IDisposable
{
private bool disposed = false;
private SafeHandle resource = new SafeFileHandle(IntPtr.Zero, true);
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Освобождение управляемых ресурсов
resource?.Dispose();
}
// Освобождение неуправляемых ресурсов
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
Такой подход гарантирует корректное освобождение ресурсов как при явном вызове Dispose(), так и при сборке мусора.