1个回答
展开全部
C#中对象的销毁和回收,在实现方式上比较灵活。它既允许立刻销毁对象,回收内存,也允许通过垃圾回收器自动回收。能够做到这点,是因为C#提供了两种对象的销毁方式:
1、类支持IDisposable接口,在每次使用完对象后,立即通过手工Dispose()方法,或者利用Using块隐式的强制调用Dispose()方法,实现在对象的立即销毁。在Dispose()方法中,将调用Dispose()方法的带一个布尔参数的重载,在该重载函数中,手工编写代码释放对象所打开的所有托管和非托管资源。
2、通过垃圾回收器自动回收,在垃圾回收器销毁对象的时候,调用类的析构函数,释放对象打开的非托管资源,销毁对象,回收内存。由于析构函数仅在使用垃圾回收器回收的时候调用,因此析构函数内仅需要释放非托管资源即可,对象所打开占用的托管资源对象,会被垃圾回收器自动销毁。析构函数对非托管资源的释放,也是通过调用调用Dispose()方法的带一个布尔参数的重载来实现。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gisfarmer/archive/2009/06/05/4242116.aspx
1、类支持IDisposable接口,在每次使用完对象后,立即通过手工Dispose()方法,或者利用Using块隐式的强制调用Dispose()方法,实现在对象的立即销毁。在Dispose()方法中,将调用Dispose()方法的带一个布尔参数的重载,在该重载函数中,手工编写代码释放对象所打开的所有托管和非托管资源。
2、通过垃圾回收器自动回收,在垃圾回收器销毁对象的时候,调用类的析构函数,释放对象打开的非托管资源,销毁对象,回收内存。由于析构函数仅在使用垃圾回收器回收的时候调用,因此析构函数内仅需要释放非托管资源即可,对象所打开占用的托管资源对象,会被垃圾回收器自动销毁。析构函数对非托管资源的释放,也是通过调用调用Dispose()方法的带一个布尔参数的重载来实现。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gisfarmer/archive/2009/06/05/4242116.aspx
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询