2011-01-20 16 views
7

cuando yo haga una declaración como¿Tiene una clase VB6 un destructor?

Set MyObject = Nothing 

hay una función particular dentro de la clase que se invoca (es decir, que puedo usar como un destructor), para hacer cosas como limpias de seguridad de conjuntos, desconectarse de las bases de datos, ¿Etcétera?

Respuesta

16

Análogo a Class_Initialize, el constructor, también hay un destructor:

Sub Class_Terminate 
    ... ' Put your destructor code here ' 
End Sub 

se ejecuta este método tan pronto como sea el recuento de referencia de este objeto llega a cero, es decir, cuando todas las variables que hacen referencia a este objeto han salido del alcance o se han establecido para establecerse en otra cosa (p.ej. Nothing). Por lo tanto, Set MyObject = Nothing solo llamará al destructor si MyObject es la última variable que hace referencia a este objeto.

+0

+1: Esto me estaba molestando por un tiempo. Has dejado de pensar: o) –

+3

Por mucho que me gusta usar VB6, esto tiene sus desventajas. Por ejemplo, no se llama si el programa se cuelga (excepciones no controladas, instrucción End ejecutada, etc.), así que no confíe en él para desbloquear archivos, limpiar buffers finales, etc. – Bob77

+0

Gracias, @Heinzi y @Bob Riemersma. –

-1

No. VB6 no proporciona ningún mecanismo al programador para escribir algo explícitamente. Lo que un programador puede hacer es Set MyObject = Nothing y VB se encargará del resto.

ACTUALIZACIÓN:

Uno puede utilizar el Class_Terminate para manejar este

+2

Incorrecto. El método 'Class_Terminate' se activa cuando un objeto sale del alcance o se establece en' Nothing'. –

+0

¡Lo siento! Stand corregido. – Kangkan

Cuestiones relacionadas