Sobes.tech
Middle+

What is IDisposable used for?

sobes.tech AI

Answer from AI

The IDisposable interface in C# is used for releasing unmanaged resources, such as file handles, network connections, or COM objects, when they are no longer needed.

By implementing IDisposable, a class provides a Dispose() method that is called for explicit resource release, preventing memory leaks and other issues.

Example usage:

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)
            {
                // Release managed resources
                resource?.Dispose();
            }
            // Release unmanaged resources
            disposed = true;
        }
    }

    ~ResourceHolder()
    {
        Dispose(false);
    }
}

This approach guarantees proper release of resources both when Dispose() is called explicitly and during garbage collection.