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块。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章