Junior — Middle
Poderia explicar o propósito da interface IDisposable e como usá-la na gestão de recursos?
sobes.tech IA
Resposta da IA
A interface IDisposable em C# destina-se a libertar recursos não geridos, como descritores de ficheiros, ligações a bases de dados, sockets, etc. Ela contém um método Dispose() que é chamado para libertar explicitamente os recursos.
O uso de IDisposable permite controlar o momento em que os recursos são libertados, o que é importante para evitar fugas.
Exemplo de uso:
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)
{
// Libertar recursos geridos
}
// Libertar recursos não geridos
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
Também é comum usar a construção using, que chama automaticamente Dispose():
using(var resource = new ResourceHolder())
{
// trabalhar com o recurso
}
// Aqui, Dispose() é chamado automaticamente
Assim, IDisposable ajuda a gerir corretamente os recursos e a evitar fugas.