Los Destructores

3
Destructores en C# Los destructores se utilizan para destruir instancias de clases. El destructor llama implícitamente al método Finalize sobre la clase base del objeto. Esto significa que se realizan llamadas al método Finalize de forma recursiva para todas las instancias de la cadena de herencia, desde la más derivada hasta la menos derivada. El programador no puede controlar cuándo se llama al destructor, porque esto lo determina el recolector de elementos no utilizados. El recolector de elementos no utilizados comprueba si hay objetos que ya no están siendo utilizados por ninguna aplicación. Si considera un objeto elegible para su destrucción, llama al destructor (si existe) y reclama la memoria utilizada para almacenar el objeto. También se llama a los destructores cuando se cierra el programa. Es posible forzar la recolección de elementos no utilizados llamando al método Collect, pero en general debe evitarse su uso por razones de rendimiento. Utilizar destructores para liberar recursos En general, C# no requiere tanta administración de memoria como se necesita al desarrollar con un lenguaje que no está diseñado para un motor de ejecución con recolección de elementos no utilizados. Esto es debido a que el recolector de elementos no utilizados de .NET Framework administra implícitamente la asignación y liberación de memoria para los objetos. Sin embargo,

description

Programacion digital

Transcript of Los Destructores

Page 1: Los Destructores

Destructores en C#

Los destructores se utilizan para destruir instancias de clases. El destructor llama

implícitamente al método Finalize sobre la clase base del objeto. Esto significa que se realizan

llamadas al método Finalize de forma recursiva para todas las instancias de la cadena de

herencia, desde la más derivada hasta la menos derivada.

El programador no puede controlar cuándo se llama al destructor, porque esto lo determina el

recolector de elementos no utilizados. El recolector de elementos no utilizados comprueba si hay

objetos que ya no están siendo utilizados por ninguna aplicación. Si considera un objeto elegible

para su destrucción, llama al destructor (si existe) y reclama la memoria utilizada para almacenar

el objeto. También se llama a los destructores cuando se cierra el programa.

Es posible forzar la recolección de elementos no utilizados llamando al método Collect, pero

en general debe evitarse su uso por razones de rendimiento.

Utilizar destructores para liberar recursos

En general, C# no requiere tanta administración de memoria como se necesita al desarrollar

con un lenguaje que no está diseñado para un motor de ejecución con recolección de elementos

no utilizados. Esto es debido a que el recolector de elementos no utilizados de .NET Framework

administra implícitamente la asignación y liberación de memoria para los objetos. Sin embargo,

cuando la aplicación encapsule recursos no administrados como ventanas, archivos y conexiones

de red, debería utilizar destructores para liberar dichos recursos. Cuando el objeto cumple los

requisitos para su destrucción, el recolector de elementos no utilizados ejecuta el método Finalize

del objeto.

Liberación explícita de recursos

Si la aplicación utiliza un recurso externo costoso, también es recomendable liberar

explícitamente el recurso antes de que el recolector de elementos no utilizados libere el objeto.

Para ello debe implementar un método Dispose desde la interfaz IDisposable que realiza la

limpieza del objeto necesaria. Esto puede mejorar considerablemente el rendimiento de la

Page 2: Los Destructores

aplicación. Aunque controle explícitamente los recursos, el destructor garantiza la liberación de

recursos si falla la llamada al método Dispose.

Para obtener más detalles sobre la liberación de recursos, vea los siguientes temas:

Limpiar recursos no administrados

Implementar un método Dispose

using (Instrucción, Referencia de C#)

Especificación del lenguaje C#

Para obtener más información, consulte la Especificación del lenguaje C#. La especificación

del lenguaje es la fuente definitiva de la sintaxis y el uso de C#. (Microsoft, 2013)

Destructores: