using 语句使用注意点

C#提供了using语句保证Dispose()会在尽可能最早的时刻调用。它的惯用用法是声明正在使用的对象,并用大括号创建对象的作用域。当执行到达结束大括号时,Dispose()方法将自动对对象调用,如下例代码:
class Program
{
static void Main(string[] args)
{
//1. 固定推荐的用法
using(Font theFont = new Font("Arial",10.0f))
//在using语句中创建Font,当using语句结束时,将对Font对象调用Dispose()
{
//使用thfFont
}//结束时调用 theFont的Dispose

//2. 可用但不推荐的用法
Font anotherFont = new Font("Courier",12.0f);
//在using语句之外创建Font对象anotherFont
using(anotherFont)//
{
//使用anotherFont
}//结束时调用anotherFont的Dispose
}
}
第一部分中,Font对象在using语句中创建。当using语句结束时,将对Font对象调用Dispose()。
第二部分中,Font对象是在using语句之外创建的。当我们决定使用该字体时,又把它放入using语句中,当语句结束时,将调用Dispose()对象。
但是,第二种方式存在危险,如果对象创建之后using语句块开始之前抛出了异常,对象将不会清除。其次,变量在using语句块结束后仍然在作用域中,但是访问它时却会失败。
using语句还可以保护我们免于意外的异常。无论控制如何离开using语句,Dispose()都会调用。好比一个隐含的try-catch-finally块。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值