.Net中托管资源的回收可以使用try…finally的方式进行回收,也可以使用using关键字进行回收,前提是要回收的资源已经实现IDisposal接口。实际上using在内部实现的也是try…finally的方式进行资源释放的。
如果需要释放的资源有两个以上,且其类型相同,使用using可以应付的来,如下代码:
using (Image image = Image.FromFile(@"E:/Demo1.bmp"), image2 = Image.FromFile(@"D:/Demo2.bmp")){}
但是如果是两个类型不同的资源,则不能这样使用using,最好也不要使用嵌套的using,因为一旦里层的using出现异常,外层using内的资源是得不到释放的,这种情况最好还是采用try….finally方法进行释放。但是仍然有途径可以使用using关键字。上面说过,使用using关键字进行释放资源的资源都是实现了IDisposal接口的,于是可以这样:
using(IDisposal cls1 = new Class1(),cls2 = new Class2())
{
//这里面再把cls1和cls2转换为要使用的类型
}