主题:
using 什么时候用
作者:
等级:
信 誉 值:
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一样..
回复人: 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;
}
}
}