服务器之家

服务器之家 > 正文

谈C# using的用法与好处

时间:2021-11-21 14:50     来源/作者:net小伙

之前的一篇文章中的代码中有一个using的用法,刚开始查看了一些资料说是强制关闭对象的一个命令。今天又查了一些资料,才明白,原来using指令调用了一个方法——Dispose()方法。而Dispose()方法的作用就是释放所有的使用资源。

例:

?
1
2
3
4
5
6
7
8
9
public void ExecuteCommand( string connString, string commandString )
{
 SqlConnection myConnection = new SqlConnection( connString );
 SqlCommand mySqlCommand = new SqlCommand( commandString,
  myConnection );
 
 myConnection.Open();
 mySqlCommand.ExecuteNonQuery();
}

这个例子中的两个可处理对象没有被恰当的释放:SqlConnection和SqlCommand。两个对象同时保存在内存里直到析构函数被调用。

解决这个问题的方法就是在使用完命令和链接后就调用它们的Dispose:

?
1
2
3
4
5
6
7
8
9
10
11
12
public void ExecuteCommand( string connString, string commandString )
{
 SqlConnection myConnection = new SqlConnection( connString );
 SqlCommand mySqlCommand = new SqlCommand( commandString,
  myConnection );
 
 myConnection.Open();
 mySqlCommand.ExecuteNonQuery();
 
 mySqlCommand.Dispose( );
 myConnection.Dispose( );
}

使用using语句也可以很好的实现此功能,而且代码很清晰:

?
1
2
3
4
5
6
7
8
9
10
11
public void ExecuteCommand( string connString, string commandString )
{
 using ( SqlConnection myConnection = new  SqlConnection( connString ))
 {
  using ( SqlCommand mySqlCommand = new SqlCommand( commandString, myConnection ))
  {
   myConnection.Open();
   mySqlCommand.ExecuteNonQuery();
  }
 }
}

当你在一个函数内使用一个可处理对象时,using语句是最简单的方法来保证这个对象被恰当的处理掉。当这些对象被分配时,会被编译器放到一个try/finally块中。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SqlConnection myConnection = null;
 
// Example Using clause:
using ( myConnection = new SqlConnection( connString ))
{
 myConnection.Open();
}
 
 
// example Try / Catch block:
try {
 myConnection = new SqlConnection( connString );
 myConnection.Open();
}
finally {
 myConnection.Dispose( );
}

有时候使用try/finally块的时候会发现如果发生错误,程序不会报错。本人感觉还是使用using语句比较好。
以上就是本文的全部内容,希望对大家的学习有所帮助。

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部