Está en la página 1de 2

Destructores en C#

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


implcitamente al mtodo Finalize sobre la clase base del objeto. Esto significa que se realizan
llamadas al mtodo Finalize de forma recursiva para todas las instancias de la cadena de
herencia, desde la ms derivada hasta la menos derivada.
El programador no puede controlar cundo 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 estn siendo utilizados por ninguna aplicacin. Si considera un objeto elegible
para su destruccin, llama al destructor (si existe) y reclama la memoria utilizada para almacenar
el objeto. Tambin se llama a los destructores cuando se cierra el programa.
Es posible forzar la recoleccin de elementos no utilizados llamando al mtodo Collect, pero
en general debe evitarse su uso por razones de rendimiento.
Utilizar destructores para liberar recursos
En general, C# no requiere tanta administracin de memoria como se necesita al desarrollar
con un lenguaje que no est diseado para un motor de ejecucin con recoleccin de elementos
no utilizados. Esto es debido a que el recolector de elementos no utilizados de .NET Framework
administra implcitamente la asignacin y liberacin de memoria para los objetos. Sin embargo,
cuando la aplicacin encapsule recursos no administrados como ventanas, archivos y conexiones
de red, debera utilizar destructores para liberar dichos recursos. Cuando el objeto cumple los
requisitos para su destruccin, el recolector de elementos no utilizados ejecuta el mtodo Finalize
del objeto.

Liberacin explcita de recursos


Si la aplicacin utiliza un recurso externo costoso, tambin es recomendable liberar
explcitamente el recurso antes de que el recolector de elementos no utilizados libere el objeto.
Para ello debe implementar un mtodo Dispose desde la interfaz IDisposable que realiza la
limpieza del objeto necesaria. Esto puede mejorar considerablemente el rendimiento de la

aplicacin. Aunque controle explcitamente los recursos, el destructor garantiza la liberacin de


recursos si falla la llamada al mtodo Dispose.
Para obtener ms detalles sobre la liberacin de recursos, vea los siguientes temas:
Limpiar recursos no administrados
Implementar un mtodo Dispose
using (Instruccin, Referencia de C#)

Especificacin del lenguaje C#


Para obtener ms informacin, consulte la Especificacin del lenguaje C#. La especificacin
del lenguaje es la fuente definitiva de la sintaxis y el uso de C#. (Microsoft, 2013)

Destructores:

También podría gustarte