Back to questions
Middle+
2
Для чего нужен IDisposable?
Companies where asked
Gravilink
Answer from AI
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(), так и при сборке мусора.