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

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

主题:

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

回复人: 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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航