P.Dragon的开发历程

//Code for fun!Code for yourself!
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

using (XX xx = ...) 的含义

Posted on 2006-03-21 09:41  P.Dragon  阅读(566)  评论(2)    收藏  举报

有些资源,申请了,用完了,就要释放掉,比如文件打开后,要关闭, 数据库打开后,要关闭.
一般是这样

XX xx =  null;
try{
   xx.Open();
} finally  {
   if (xx != null) {
      xx.Dispose();
   }
}

其中Dispose()方法 是接口IDispose的方法.

你可以认为写上
using (XX xx = ...) {
   这里尽情地用吧!
}

它就像上面写的try finally一样..

using() {  }
()里声明的变量在{}语句体执行完后就将对象回收,优化内存资源管理

 1using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ACCOUNT, signOnParms)) {
 2
 3
 4
 5   using (SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING_NON_DTC)) {
 6    conn.Open();
 7    using (SqlTransaction trans = conn.BeginTransaction()) {
 8     try {
 9      SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_SIGNON, signOnParms);
10      SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_ACCOUNT, accountParms);
11      SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_PROFILE, profileParms);
12      trans.Commit();
13     
14     }
catch {
15      trans.Rollback();
16      throw;
17     }

18    }

19   }