What is an IDisposable? How does it work?

  • IDisposable is an interface which provides a mechanism for releasing unmanaged resources.
  • It contains a single method called Dispose() which is one of the ways developers can use to release unmanaged resources.
  • the Garbage Collector provided by the CLR can only maintain and release managed code, but it can't act upon unmanaged code such as Database connections, Sockets etc.
  • In such cases the developers must ensure the resources are properly released once their role is complete.
  • By placing such code in the Dispose method developers can ensure that the code is released once the object life completes.
  • Classes which implement IDisposable implement Dispose method and are instantiated inside a using block which calls the Dispose method once the scope is over.
namespace System
{
    //
    // Summary:
    //     Provides a mechanism for releasing unmanaged resources.
    public interface IDisposable
    {
        //
        // Summary:
        //     Performs application-defined tasks associated with freeing, releasing, or resetting
        //     unmanaged resources.
        void Dispose();
    }
}
  • IDisposable is an interface which provides a mechanism for releasing unmanaged resources.
  • It contains a single method called Dispose() which is one of the ways developers can use to release unmanaged resources.
  • the Garbage Collector provided by the CLR can only maintain and release managed code, but it can’t act upon unmanaged code such as Database connections, Sockets etc.
  • In such cases the developers must ensure the resources are properly released once their role is complete.
  • By placing such code in the Dispose method developers can ensure that the code is released once the object life completes.
  • Classes which implement IDisposable implement Dispose method and are instantiated inside a using block which calls the Dispose method once the scope is over.
namespace System
{
    //
    // Summary:
    //     Provides a mechanism for releasing unmanaged resources.
    public interface IDisposable
    {
        //
        // Summary:
        //     Performs application-defined tasks associated with freeing, releasing, or resetting
        //     unmanaged resources.
        void Dispose();
    }
}
Default image
Sriram Mannava

I'm a full-stack developer and a software enthusiast who likes to play around with cloud and tech stack out of curiosity.

Leave a Reply