Excel VBA对象构造函数和析构函数

not*_*not 26 vba constructor destructor memory-leaks object

我需要在VBA中制作一些需要互相引用的自定义对象,我有一些问题.

首先 - 对象构造函数如何在VBA中工作?有施工人员吗?

第二 - 有破坏者吗?VBA如何处理对象生命周期的结束?如果我有一个引用其他对象的对象(这是他们唯一的引用),那么我可以将它设置为Nothing并用它完成或者是否会产生内存泄漏?

这种准OO的东西只是有点刺激.

Wil*_*rds 24

VBA支持类模块.它们具有构造函数的Class_Initialize事件和作为析构函数的Class_Terminate.您可以定义属性和方法.我相信VBA使用对象生命周期的引用计数.这就是为什么你会在那种类型的代码中看到很多Set whatever = Nothing的原因.在您的示例中,我认为它不会泄漏任何内存.但是你需要注意循环引用.


Col*_*lin 17

如果要在VBA中创建类模块,对于构造函数,可以使用:

Private Sub class_initialize()
....
End Sub
Run Code Online (Sandbox Code Playgroud)

没有析构函数,因为VBA是垃圾收集的.只需确保清理任何循环引用,您应该避免任何可能的内存泄漏.

  • 没有析构函数是不正确的.它是Class_Terminate (10认同)

小智 9

自从我使用它们已经有一段时间了,但我认为你不能将参数传递给构造函数.我认为这是我遇到的问题之一,但我遇到了很多关于这些课程如何工作的问题,以及我如何期望它们能够工作,我可能会记错了.


Tec*_*noS 8

存在Class_Terminate,它与析构函数几乎相同.