VB6类是否有析构函数?

Bri*_*per 8 vb6 class

当我执行诸如的语句时

Set MyObject = Nothing
Run Code Online (Sandbox Code Playgroud)

在调用的类中是否有一个特定的函数(即我可以用作析构函数),执行清理数组,断开数据库等等的操作?

Hei*_*nzi 17

类似于Class_Initialize构造函数,还有一个析构函数:

Sub Class_Terminate
    ... ' Put your destructor code here '
End Sub
Run Code Online (Sandbox Code Playgroud)

一旦该对象的引用计数达到零,即,当引用该对象的所有变量都超出范围或已设置为设置为其他(例如Nothing)时,就执行该方法.因此,Set MyObject = Nothing如果MyObject是引用此对象的最后一个变量,则只调用析构函数.

  • +1就像它在[手册主题]中所说的那样(http://msdn.microsoft.com/en-us/library/aa445560(v = VS.60).aspx).@Bob另一种方法是禁止`End`语句并允许`Class_Terminate` - 它很有用,而`End`是邪恶的.当你说未处理的异常时,你的意思是未处理的原生VB6错误?在这种情况下,"Class_Terminate"不会触发是不正确的 - 不记得了吗?我们对错误处理程序非常着迷,所以现在很少有未处理的异常(着名的最后一句话) (4认同)
  • 尽管我喜欢使用VB6,但它有其缺点.例如,如果程序崩溃(未处理的异常,执行End语句等),则不会调用它,因此不要依赖它来解锁文件,刷新最终缓冲区等. (3认同)