在.net framework中有很多非托管资源,那么非托管资源就需要我们手动释放


例如:数据库链接,文件IO操作,SOCKET,COM对象,网络连接


有两种方式清理非托管资源,调用dispose方法,或者实现finalize


Finalize 方式,又称为终止化操作,其大致的原理为:通过对自定义类型实现一个Finalize 方法来释放非托管资源,而终止化操作在对象的内存回收之前通过调用 Finalize方法来释放资源,我们可以使用析构函数来释放,因为我们无法重写Finalize方法,代码如下:

public class product
{
~product(){
}
}

Dispose方式,这种释放资源的方式比较常见,一般我们操作IO时,需要dispose资源,并且close流

public class Battery
{
private Battery(){}

public void WriteFile(string path,string content)
{
StreamWriter sw = new StreamWriter(path,true);
sw.write(content);
sw.Dispose();
sw.Flush();
sw.Close();
}
}

当然经常的我们是using来包裹这些操作,因为using关键字在使用完后,内部实现了释放资源