Junior — Middle
Pode explicar o que se entende por padrão Dispose na programação?
sobes.tech IA
Resposta da IA
O padrão Dispose na programação, especialmente em C#, é utilizado para libertar corretamente recursos não geridos (por exemplo, descritores de ficheiros, ligações a bases de dados, sockets), que não são controlados pelo recolhedor de lixo.
Em C#, para isso, implementa-se a interface IDisposable, que contém o método Dispose(). A chamada a este método liberta explicitamente os recursos quando o objeto já não é necessário.
Exemplo de uso:
class ResourceHolder : IDisposable
{
private bool disposed = false;
private IntPtr unmanagedResource; // exemplo de recurso não gerido
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this); // impede a chamada ao finalizador
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Libertar recursos geridos
}
// Libertar recursos não geridos
CloseHandle(unmanagedResource);
unmanagedResource = IntPtr.Zero;
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
Assim, o padrão Dispose ajuda a controlar o momento de libertação de recursos e previne fugas de memória ou bloqueios.