程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 談C# using的用法與好處

談C# using的用法與好處

編輯:關於C語言

之前的一篇文章中的代碼中有一個using的用法,剛開始查看了一些資料說是強制關閉對象的一個命令。今天又查了一些資料,才明白,原來using指令調用了一個方法——Dispose()方法。而Dispose()方法的作用就是釋放所有的使用資源。

例:

? 1 2 3 4 5 6 7 8 9 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:

? 1 2 3 4 5 6 7 8 9 10 11 12 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語句也可以很好的實現此功能,而且代碼很清晰:

? 1 2 3 4 5 6 7 8 9 10 11 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塊中。

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 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語句比較好。
以上就是本文的全部內容,希望對大家的學習有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved