VB6.0中析构函数非常方便,但是到了VB2005 析构似乎没有了,一直风闻DISPOSE但是实际上DISPOSE只是一个自定义事件并未真正析构,请问VB 2005中标准的析构手法是什么

解决方案 »

  1.   

    我倒,谁说dispose是自定义事件的?????????
    晕,dispose是个接口啊。lz的基础亟待加强。。
      

  2.   

    我是基础有点若,定义接口以后还是得自己调用才会自动触发DISPOSE啊,那DISPOSE于=NOTHING差异究竟在哪
      

  3.   

    NOTHING并不一定是释放资源
    看看msdn的描述:将 Nothing 赋给变量将把该变量设置为其声明类型的默认值。如果该类型包含变量成员,则这些成员都会设置为其默认值。下面的示例阐释这一点。  复制代码 
    Public Structure testStruct
        Public name As String
        Public number As Short
    End Structure
    Dim ts As testStruct, i As Integer, b As Boolean
    ts = Nothing 
    ' The preceding statement sets ts.name to "" and ts.number to 0.
    i = Nothing 
    b = Nothing 
    ' The preceding statements set i to 0 and b to False.
     如果变量是引用类型(即对象变量),则 Nothing 意味着该变量不与任何对象相关联。下面的示例说明了这一点。  复制代码 
    Dim testObject As Object
    testObject = Nothing 
    ' The preceding statement sets testObject to not refer to any instance.
     将 Nothing 赋给对象变量时,该变量将不再引用任何对象实例。如果对象以前引用了一个实例,那么将其设置为 Nothing 不会终止该实例本身。只有在垃圾回收器 (GC) 检测到没有任何剩余的活动的引用时,才会终止该实例,并释放与其关联的内存和系统资源。
      

  4.   

    而dispose你可以在实现时显式调用GC.Collect达到回收资源的作用
      

  5.   

    非常感谢,原来是用GC.Collect,我一直以为销毁对象的函数没了在发慌呢,谢谢VirtualDesktop大哥指导