Junior — Middle
Could you explain the purpose of the IDisposable interface and how to use it in resource management?
sobes.tech AI
Answer from AI
The IDisposable interface in C# is designed for releasing unmanaged resources, such as file handles, database connections, sockets, etc. It contains a single method Dispose(), which is called to explicitly release resources.
Using IDisposable allows controlling the timing of resource release, which is important for preventing leaks.
Example of usage:
class ResourceHolder : IDisposable
{
private bool disposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Release managed resources
}
// Release unmanaged resources
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
The using statement is also often used, which automatically calls Dispose():
using(var resource = new ResourceHolder())
{
// work with resource
}
// Dispose() is called automatically here
Thus, IDisposable helps to manage resources properly and prevent leaks.