Los destructores rara vez se usan en C#, así que mucha gente se ha olvidado de ellos, aunque son de poca utilidad y son inútiles para estudiar.
Uno. Características de los destructores:
Los destructores solo pueden existir en clases, no en estructuras; El destructor no puede tener modificadores, incluyendo modificadores de control de acceso, modificadores estáticos, modificadores abstractos, modificadores virtuales, etc.; El destructor no tiene parámetros, lo que significa que no puede haber sobrecarga.
Dos. Cuándo llamar al destructor:
El destructor se llama cuando el basurero recicla el objeto, pero el basurero tiene una característica: es perezoso, No recicla la variable inmediatamente después de salir del alcance y la vida útil, sino solo cuando considera que es apropiado, normalmente cuando la memoria es limitada. Por ejemplo:
Después de que el método btn_Click regresa, de debe terminarse, pero no se llama a su destructor, lo que indica que el recolector de basura no lo recicló; Cuando cierras el formulario, el destructor se ejecuta, lo que indica que al final del programa, el recogedor de basura se ve obligado a reciclarlo a regañadientes (^-^). Por supuesto, podemos llamar a GC.Collect() para forzar el reciclaje:
Cuando haces clic en btn1, de1 y el nuevo Demo() se terminan y se llama al destructor. de2 aún no ha expirado su periodo de vida, por lo que incluso si se llama al método GC.Collect, no se reciclará; cuando el btn1_Click regresa, de2 ha expirado su periodo de vida, pero debido a la pereza del recogedor de basura, sigue sin reciclarse; No es hasta que btn2 llama al método GC.Collect que se recupera de2 y se llama a su destructor.
Una forma de evitar llamadas a destructores es implementar la interfaz IDisposable, que define un método único: Dispose(). Esto evita que el destructor sea llamado internamente, lo que significa que si estás aburrido, puedes implementar esta interfaz sin llamar al GC.SuppressFinalize(^-^), que no tiene sentido porque no bloquea al destructor:
Ahora no se llamará el destructor de de1.
Tres. La esencia del destructor:
Un destructor es esencialmente un método que adopta la forma de:
Normalmente pensamos que los destructores solo pueden ser llamados por el sistema, no por los propios programadores, pero esto no es del todo cierto, y los destructores también pueden llamarse explícitamente, al fin y al cabo, es solo un método:
Los destructores no son necesarios a menos que se abran recursos no gestionados en la clase
|