【发布时间】:2017-06-29 02:47:55
【问题描述】:
似乎Set Object = Nothing
没有破坏这段代码中的Fs
对象:
Sub Test2()
Dim Fs As New FileSystemObject
Set Fs = Nothing
MsgBox Fs.Drives.Count ' this line works
End Sub
最后一行没有错误!这意味着Fs
对象仍然存在,对吧?
那么如何销毁这个Fs
对象。
【问题讨论】:
-
让它超出范围?为什么你觉得有必要摧毁它?
-
@Comintern,我使用这个对象来读取保存在 TrueCrypt 卷中的文本文件,使用它后我无法卸载这个卷,也许如果我销毁它我可以卸载这个卷。
-
@Comintern 在某种意义上是重复的,但不知道问题答案的人甚至不会怀疑它是重复的,也不知道如何搜索它。
-
这种不直观的行为正是 Rubberduck 的 Object variable is self-assigned 代码检查背后的原因。在本地范围内使用
As New
会改变引用为空的工作方式,因为Dim
语句不是可执行语句,因此变量在整个过程中都在范围内;在清空后引用它只是重新创建对象。