public class c1
{
     public datatable test()
     {
         using(datatable tbl=new datatable())
         {
             tbl.rows.add(...);
             return tbl
         }
     }
}public calss c2
{
       c1=new c1()
      public void test1()
      {
          datatable tbl=c1.test();
          tbl.rows.add();
      }
}请问垃圾回收器什么时候回收这个tbl表?

解决方案 »

  1.   


             using(datatable tbl=new datatable())  // 错
             {
                 tbl.rows.add(...);
                 return tbl;                       // <--
             }如果要返回一个表,就不能用Dispose了。
      

  2.   

    现在有两个c1
    中的using执行完,回收掉c2中要根据垃圾回收机制这个没有时间限定的,要看系统处理
      

  3.   

    Dispose 也不过是显示通知垃圾回收,里面的托管资源可以收回了。至于何时,你控制不了。
    Dispose 最主要是去释放非托管的资源。
    对于托管的资源,别想了。你再Dispose也没用