我写个一个类 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了啊

解决方案 »

  1.   

    除非代码设置 c1 为 nothing 或 c1 所在的 B 被释放,否则 c1 就一直存在,Dispose 充其量就一个方法,普遍作用是释放非托管资源,而托管的 class1,就得由系统在适当的时机来释放了,我们能做的,就是取消它所有引用,扫除释放前的障碍。
      

  2.   

    Dispose跟 = null 两回事儿,Dispose主要是用来释放资源,而不是析构的。
      

  3.   

    在类中,自己析构好像也不划算,貌似以前在哪里看到实现Finalize会增加存活期呢。
            Protected Overrides Sub Finalize()
                MyBase.Finalize()
            End Sub
    罢了,结贴。
      

  4.   

    Finalize可能会导致本来这次GC就应该回收的东西,推迟到下一次GC时才回收。