在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!!
这说明对象是在程序执行结束后才调用析构函数予以释放。
但是,怎么样才能让对象在结束之前手动释放呢?谢谢大家了!
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!!
这说明对象是在程序执行结束后才调用析构函数予以释放。
但是,怎么样才能让对象在结束之前手动释放呢?谢谢大家了!
解决方案 »
- 类型“ASP.global_asax”同时存在于"..."和"..."中
- 在VS2005中用C#,如何可以像VS2008里VC那样修改Windows XP,Windows 2000,Office之类的界面风格
- 100元求个解决办法-读取网站刷新过快导致COOKIE丢失!在线等。很急!
- C#关于EXCEL读取和写入到数据库的问题
- 检测论坛用户是否在线
- 大家使用哪种事务模型:SQL事务,ADO事务,COM+事务?
- 如何改变控件的scrollbar的颜色或样式
- DataSet与xml的操作的问题?
- 关于水晶报表
- 希望高手给看看下面是什么编码,如何正确转换---在线等
- vs2005下关于自动添加括号的的问题
- 在windows mobile 下,当输入法状态改变,改变Form的高度以达到滚动的目的
{
Console.WriteLine("haha");
}
IDispose.Dispose 也只是为了释放非托管资源,对托管内存无能为力。举个例子,FileStream, SqlDbConnection 都实现了 IDispose,但它们的 Dispose 函数其实就是 Close
综上所述,C# 无法手动释放对象
GC.Collect()
Console.WriteLine( "haha" );就能在输出 haha 前调用 ~A()不过这个函数会回收所有超出生存期的对象,效率极低下,用前请三思