主 题: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(笨笨) ( ) 信誉:100 2005-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 <script language="jscript" src="/expert/XMLExtra.js" type="text/javascript"> </script><script language="jscript" src="/expert/GetNewJob.js" type="text/javascript"> </script>
回复人: imxh(风轻扬) ( ) 信誉:100 2005-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