是不是所有的类用完都要dispose啊?
比如DataSet d=new DataSet();
SqlCommand,DataRow等等
用完后是不是要释放资源啊????
有时候我不释放好象也没有什么错!!!!

解决方案 »

  1.   

    一般情况不需要,。net 是会自动清理的
      

  2.   

    那为什么还要实现IDisposable接口?自己定义的类是不是都要实现这个接口来释放资源????如果不实现,自定义的类怎么释放?.net也会释放资源吗?
      

  3.   

    对于初学者来说,我觉得不用用采用显式析构也无伤大雅,正如大家所说的.net有垃圾收集器
    但是对于一个成熟的程序员来说,还是尽量在自己知道已经是对对象最后一次引用以后显式的调用dispose()方法释放资源比较好(虽然难度增加)
    因为垃圾收集器的算法是循环一段时间后对整个应用程序的对象作分析,如果不存在,则删除它的对象占用内存,如果你用数据库的最后一个引用后没有调用Dispose(),虽然没什么大的错误,但缺点有
    1)在等到下一次垃圾收集器扫描前,数据库的内存是浪费的
    2)当垃圾收集器清理垃圾时,因为垃圾多,所以增加了服务器的负担个人意见,仅供参考
      

  4.   

    某些情况下,对象会使用非托管资源,例如一些句柄,互斥元等操作系统核心对象等等,在这种情况下,在结束使用对象之后,你必须显式的调用它的Dispose()方法,或者(如果有的话)调用它的包装方法Close()。例如System.Threading.Mutex,一旦你创建使用了它,就一定要在最后使用Mutex.Close()来释放资源,不然会在操作系统核心中不断积累,最终导致灾难。
      

  5.   

    To Net_Soul(网 魂) :应该明确一点,即使你显式的调用了Dispose()方法,对象也不会理解被回收,仍然是要等待下一次回收周期才会进入回收队列。调用Dispose()方法的主要意义在于提前释放一些“边缘资源”,而不是对象本身。