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

主 题:using 什么时候用
作 者:overmind (overmind)
等 级:
信 誉 值:96
所属社区:.NET技术 .NET Framework
问题点数:20
回复次数:3
发表时间:2005-12-28 15:25:07
public AccountInfo SignIn(string userId, string password) { SqlParameter[] signOnParms = GetSignOnParameters(); signOnParms[0].Value = userId; signOnParms[1].Value = password; using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ACCOUNT, signOnParms)) { ... } } 请问这里为什么要用using,一直不太明白这里用using的意思,请明白的您告诉我,谢谢!

回复人: ** ben_na(笨笨) ** ( 一级\(初级\) ) 信誉:1002005-12-28 16:41:00得分: 0
有些资源,申请了,用完了,就要释放掉,比如文件打开后,要关闭, 数据库打开后,要关闭. 一般是这样 XX xx = null; try{ xx.Open(); } finally { if (xx != null) { xx.Dispose(); } } 其中Dispose()方法 是接口IDispose的方法. 你可以认为写上 using (XX xx = ...) { 这里尽情地用吧! } 它就像上面写的try finally一样..

** Top **

回复人: ** imxh(风轻扬) ** ( 一级\(初级\) ) 信誉:1002005-12-28 16:50:00得分: 0

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


using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ACCOUNT, signOnParms)) {

using (SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING_NON_DTC)) {
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction()) {
try {
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_SIGNON, signOnParms);
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_ACCOUNT, accountParms);
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_PROFILE, profileParms);
trans.Commit();

}catch {
trans.Rollback();
throw;
}
}
}

** Top **

Published At
Categories with Web编程
Tagged with
comments powered by Disqus