在c#中,我想在主程序执行过程中手动释放对象所占内存,应该怎么做,我的测试代码如下:
using System;namespace ch{
class A
     {
     ~A()
     {
      Console.WriteLine("The disconstructor called!!");
     }
}
    class Test
    {
     static void Main()
    {
   A a=new A();
   Console.WriteLine("haha");
    }
    }
}得到的结果是
haha
The disconstructor called!!
 
这说明对象是在程序执行结束后才调用析构函数予以释放。
但是,怎么样才能让对象在结束之前手动释放呢?谢谢大家了!

解决方案 »

  1.   

    using(A a=new A())

      Console.WriteLine("haha"); 
    }
      

  2.   

    如同楼上的using语句咯不过一般情况下不需要用到。用C#这样的高级语言,最好别去管内存。
      

  3.   

    using 只对用实现了 IDispose 的类有用,最终仍是要调用 IDispose.Dispose 这个函数
    IDispose.Dispose 也只是为了释放非托管资源,对托管内存无能为力。举个例子,FileStream, SqlDbConnection 都实现了 IDispose,但它们的 Dispose 函数其实就是 Close
    综上所述,C# 无法手动释放对象
      

  4.   

    刚才漏了,C# 有个函数,GC.Collect 可以强制执行垃圾回收,如果这样写:A a = new A()
    GC.Collect()
    Console.WriteLine( "haha" );就能在输出 haha 前调用 ~A()不过这个函数会回收所有超出生存期的对象,效率极低下,用前请三思