谈C# using的用法与好处
之前的一篇文章中的代码中有一个using的用法,刚开始查看了一些资料说是强制关闭对象的一个命令。今天又查了一些资料,才明白,原来using指令调用了一个方法——Dispose()方法。而Dispose()方法的作用就是释放所有的使用资源。
例:
publicvoidExecuteCommand(stringconnString,stringcommandString)
{
SqlConnectionmyConnection=newSqlConnection(connString);
SqlCommandmySqlCommand=newSqlCommand(commandString,
myConnection);
myConnection.Open();
mySqlCommand.ExecuteNonQuery();
}
这个例子中的两个可处理对象没有被恰当的释放:SqlConnection和SqlCommand。两个对象同时保存在内存里直到析构函数被调用。
解决这个问题的方法就是在使用完命令和链接后就调用它们的Dispose:
publicvoidExecuteCommand(stringconnString,stringcommandString)
{
SqlConnectionmyConnection=newSqlConnection(connString);
SqlCommandmySqlCommand=newSqlCommand(commandString,
myConnection);
myConnection.Open();
mySqlCommand.ExecuteNonQuery();
mySqlCommand.Dispose();
myConnection.Dispose();
}
使用using语句也可以很好的实现此功能,而且代码很清晰:
publicvoidExecuteCommand(stringconnString,stringcommandString)
{
using(SqlConnectionmyConnection=newSqlConnection(connString))
{
using(SqlCommandmySqlCommand=newSqlCommand(commandString,myConnection))
{
myConnection.Open();
mySqlCommand.ExecuteNonQuery();
}
}
}
当你在一个函数内使用一个可处理对象时,using语句是最简单的方法来保证这个对象被恰当的处理掉。当这些对象被分配时,会被编译器放到一个try/finally块中。
SqlConnectionmyConnection=null;
//ExampleUsingclause:
using(myConnection=newSqlConnection(connString))
{
myConnection.Open();
}
//exampleTry/Catchblock:
try{
myConnection=newSqlConnection(connString);
myConnection.Open();
}
finally{
myConnection.Dispose();
}
有时候使用try/finally块的时候会发现如果发生错误,程序不会报错。本人感觉还是使用using语句比较好。
以上就是本文的全部内容,希望对大家的学习有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下