Los Destructores
-
Upload
yanza-christian -
Category
Documents
-
view
220 -
download
0
description
Transcript of 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
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: