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