Junior — Middle
¿Puedes explicar qué se entiende por patrón Dispose en programación?
sobes.tech AI
Respuesta de la IA
El patrón Dispose en programación, especialmente en C#, se utiliza para liberar correctamente recursos no gestionados (por ejemplo, descriptores de archivos, conexiones a bases de datos, sockets), que no son controlados por el recolector de basura.
En C#, para ello se implementa la interfaz IDisposable, que contiene el método Dispose(). La llamada a este método libera los recursos de manera explícita cuando el objeto ya no es necesario.
Ejemplo de uso:
class ResourceHolder : IDisposable
{
private bool disposed = false;
private IntPtr unmanagedResource; // ejemplo de recurso no gestionado
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this); // evita la llamada al finalizador
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Liberar recursos gestionados
}
// Liberar recursos no gestionados
CloseHandle(unmanagedResource);
unmanagedResource = IntPtr.Zero;
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
De esta forma, el patrón Dispose ayuda a controlar el momento de liberación de recursos y previene fugas de memoria o bloqueos.