加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

谈C# using的用法与好处

发布时间:2020-12-15 06:39:58 所属栏目:百科 来源:网络整理
导读:之前的一篇文章中的代码中有一个using的用法,刚开始查看了一些资料说是强制关闭对象的一个命令。今天又查了一些资料,才明白,原来 using指令调用了一个方法――Dispose()方法 。而Dispose()方法的作用就是释放所有的使用资源。 例: public void ExecuteCo

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

例:

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:

public void ExecuteCommand( string connString,myConnection ); 
 
 myConnection.Open(); 
 mySqlCommand.ExecuteNonQuery(); 
 
 mySqlCommand.Dispose( ); 
 myConnection.Dispose( ); 
} 

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

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块中。

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语句比较好。
以上就是本文的全部内容,希望对大家的学习有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读