好的,我正在将VB6应用程序升级到VB.NET,我不确定如何对我正在构建的容器类的class_terminate组件进行现代化:
Private Sub class_terminate()
If Not (colUserMappings Is Nothing) Then
Set colUserMappings = Nothing
End If
End Sub
问题是这个.Finalize
的.NET等价物会打开一些潜在的运行时错误,因为将容器的最终引用设置为空并不一定会破坏容器,因为.NET语言具有非确定性的最终化
在这种情况下,我如何以一种调用其终止或终止函数实际上导致容器在最后被销毁的方式对集合类进行现代化?对此有一个很好的解决方法吗?
答案 0 :(得分:7)
我不太关心这个。 .Net是一个托管的垃圾收集环境。我很确定CLR会在不再需要时为你收集这些物品。
作为一般规则,当您获取非托管资源(例如文件,数据库连接,COM对象等)时,您应该只担心这些事情。在这种情况下,您可能希望实施IDisposable
并在Dispose()
方法中正确发布所有对象/资源。