Tareas

Solo disponible en BuenasTareas
  • Páginas : 10 (2348 palabras )
  • Descarga(s) : 0
  • Publicado : 5 de diciembre de 2010
Leer documento completo
Vista previa del texto
Destructores
    Al igual que es posible definir métodos constructores que incluyan código que gestione la creación de objetos de un tipo de dato, también es posible definir un destructor que gestione cómo se destruyen los objetos de ese tipo de dato. Este método suele ser útil para liberar recursos tales como los ficheros o las conexiones de redes abiertas que el objeto a destruirestuviese acaparando en el momento en que se fuese a destruir.
    La destrucción de un objeto es realizada por el recolector de basura cuando realiza una  recolección de basura  y detecta que no existen referencias a ese objeto ni en pila, ni en registros ni desde otros objetos sí referenciados. Las recolecciones se inician automáticamente cuando el recolector detecta que queda poca memorialibre o que se va a finalizar la ejecución de la aplicación, aunque también puede forzarse llamando al método Collect() de la clase System.GC
    La sintaxis que se usa para definir un destructor es la siguiente:
| |
|~()|
|{ |
|  |
|}|

    Tras la ejecución del destructor de un objeto de un determinado tipo siempre se llama al destructor de su tipo padre, formándose así una cadena de llamadas a destructores que acaba al llegarse al destructor de object. Éste último destructor no contiene código alguno, y dado que objectno tiene padre, tampoco llama a ningún otro destructor.
    Los destructores no se heredan. Sin embargo, para asegurar que la cadena de llamadas a destructores funcione correctamente si no incluimos ninguna definición de destructor en un tipo, el compilador introducirá en esos casos una por nosotros de la siguiente forma:
||
|~() |
|{} |

    El siguiente ejemplo muestra como se definendestructores y cómo funciona la cadena de llamada a destructores:
| |
|using System; |
|class A|
|{ |
| ~A() |
| {|
|  Console.WriteLine("Destruido objeto de clase A"); |
| } |
|}...
tracking img