关于对象存活期迷惑
我写个一个类 class1。继承自组建
Inherits Component
在这个类重载了
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
MyBase.Dispose(disposing)
Over()
End Sub
释放所有自定义的资源。
然后再另外有个控件B 定义了类型为class1的窗体级变量 c1=new classs1 用完了,顺手调用了c1.Dispose
再然后,因为某种需要要用到class1
我用isnothing判断 c1是否nothing
if isnothing(c1) then c1=new class1
但奇怪的是。虽然上面的已经c1.Dispose 了 但在 isnothing(c1)还是返回 false 这是为什么呢 我都已经dispose了啊
------解决方案--------------------
除非代码设置 c1 为 nothing 或 c1 所在的 B 被释放,否则 c1 就一直存在,Dispose 充其量就一个方法,普遍作用是释放非托管资源,而托管的 class1,就得由系统在适当的时机来释放了,我们能做的,就是取消它所有引用,扫除释放前的障碍。
------解决方案--------------------
Dispose跟 = null 两回事儿,Dispose主要是用来释放资源,而不是析构的。