談C# using的用法與利益。本站提示廣大學習愛好者:(談C# using的用法與利益)文章只能為提供參考,不一定能成為您想要的結果。以下是談C# using的用法與利益正文
之前的一篇文章中的代碼中有一個using的用法,剛開端檢查了一些材料說是強迫封閉對象的一個敕令。明天又查了一些材料,才明確,本來using指令挪用了一個辦法——Dispose()辦法。而Dispose()辦法的感化就是釋放一切的應用資本。
例:
public void ExecuteCommand( string connString, string commandString ) { SqlConnection myConnection = new SqlConnection( connString ); SqlCommand mySqlCommand = new SqlCommand( commandString, myConnection ); myConnection.Open(); mySqlCommand.ExecuteNonQuery(); }
這個例子中的兩個可處置對象沒有被適當的釋放:SqlConnection和SqlCommand。兩個對象同時保留在內存裡直到析構函數被挪用。
處理這個成績的辦法就是在應用完敕令和鏈接後就挪用它們的Dispose:
public void ExecuteCommand( string connString, string commandString ) { SqlConnection myConnection = new SqlConnection( connString ); SqlCommand mySqlCommand = new SqlCommand( commandString, myConnection ); myConnection.Open(); mySqlCommand.ExecuteNonQuery(); mySqlCommand.Dispose( ); myConnection.Dispose( ); }
應用using語句也能夠很好的完成此功效,並且代碼很清楚:
public void ExecuteCommand( string connString, string commandString ) { using ( SqlConnection myConnection = new SqlConnection( connString )) { using ( SqlCommand mySqlCommand = new SqlCommand( commandString, myConnection )) { myConnection.Open(); mySqlCommand.ExecuteNonQuery(); } } }
當你在一個函數內應用一個可處置對象時,using語句是最簡略的辦法來包管這個對象被適當的處置失落。當這些對象被分派時,會被編譯器放到一個try/finally塊中。
SqlConnection myConnection = null; // Example Using clause: using ( myConnection = new SqlConnection( connString )) { myConnection.Open(); } // example Try / Catch block: try { myConnection = new SqlConnection( connString ); myConnection.Open(); } finally { myConnection.Dispose( ); }
有時刻應用try/finally塊的時刻會發明假如產生毛病,法式不會報錯。自己感到照樣應用using語句比擬好。
以上就是本文的全體內容,願望對年夜家的進修有所贊助。