1. 程式人生 > >C#語言中的Using語句塊確保資源被釋放

C#語言中的Using語句塊確保資源被釋放

    在開發C#的過程中,.NET在物件不再引用之後,清理它們的方法是使用非析構方式。

    在C++中,物件只要使用完畢,就會自動呼叫其解構函式。這對於基於資源的類的設計人員是非常好的訊息,因為如果使用者忘記關閉資源,則最好使用解構函式。只要物件使用完畢,就會呼叫C++解構函式。所以,例如,如果出現了異常,但沒有捕獲,有解構函式的物件就會呼叫它們的解構函式。

    在C#和其它託管語言中,沒有自動的、決定性的析構的概念,面是有一個垃圾回收器,它會在未來的某個時刻釋放資源。它是非決定性的,國為我們不能確定這個過程在什麼時候發生。如,忘記關閉資料庫連線可能會導致.NET可執行程式的各種問題。幸運的是,我們還有解決辦法。下面的程式碼說明了如何使用

Using語句塊確保在退出塊後立即釋放實現IDisposable介面的物件。

String connectionstring=”server=(local);integrated security=SSPI;database=Northwind”;

Using(SqlConnection conn=new SqlConnection(connectionstring))  

{

//開啟連線

Conn.Open;

//執行某些程式碼

}

    在這個例項中,無論塊是,using語句塊都會確保關閉資料庫連線。

    檢視連線類的Dispose()方法的IL程式碼,它們都檢查連線物件的當前狀態,如果其狀態為開啟,就呼叫

Close()方法。

    在程式設計時,無論在哪裡獲得資源,最好都使用using()語句塊,因為儘管我們都打算編寫釋放資源的語句,但有時會忘記,並且出現異常時using子句就會發揮作用。