使用using关键字同时释放多个资源的问题

 

.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())

{

//这里面再把cls1cls2转换为要使用的类型

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值