谈C# using的用法与好处

 更新时间:2016年05月07日 16:43:56   作者:net小伙  
这篇文章主要为大家详细介绍了C# using的用法与好处,具体分析了using指令调用的Dispose()方法,感兴趣的朋友可以参考一下

之前的一篇文章中的代码中有一个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, string commandString ) 
{ 
 SqlConnection myConnection = new SqlConnection( connString ); 
 SqlCommand mySqlCommand = new SqlCommand( commandString, 
  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语句比较好。
以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • C#表达式树基础教程

    C#表达式树基础教程

    这篇文章介绍了C#表达式树的基础教程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • C#操作NPOI实现Excel数据导入导出

    C#操作NPOI实现Excel数据导入导出

    这篇文章主要为大家详细介绍了C#如何操作NPOI实现Excel数据导入导出功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-02-02
  • C# XML与Json之间相互转换实例详解

    C# XML与Json之间相互转换实例详解

    这篇文章主要介绍了C# XML与Json之间相互转换实例详解,大家参考使用吧
    2013-11-11
  • C# SqlSugar批量执行SQL语句及批量更新实体对象的操作方法

    C# SqlSugar批量执行SQL语句及批量更新实体对象的操作方法

    SqlSugar 是一款 老牌 .NET开源ORM框架,由果糖大数据科技团队维护和更新 ,开箱即用最易上手的ORM,这篇文章主要介绍了C# SqlSugar批量执行SQL语句以及批量更新实体对象,需要的朋友可以参考下
    2024-07-07
  • C# DateTime.Now.ToString() 用法示例讲解

    C# DateTime.Now.ToString() 用法示例讲解

    这篇文章主要介绍了C# DateTime.Now.ToString() 用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • C#学习基础概念二十五问

    C#学习基础概念二十五问

    C#学习基础概念二十五问...
    2007-04-04
  • C#中自定义事件和委托实例

    C#中自定义事件和委托实例

    这篇文章主要介绍了C#中自定义事件和委托实例的,本文先是阐述了事件的原理,然后讲解了事件和委托的步骤,并给出了实例代码,需要的朋友可以参考下
    2015-01-01
  • C# 显示、隐藏窗口对应的任务栏

    C# 显示、隐藏窗口对应的任务栏

    WPF中全屏窗口,会自动隐藏任务栏,那非全屏窗口如何隐藏任务栏?甚至有没有一种场景,隐藏任务后自定义一套系统任务栏来显示?这篇文章主要介绍了C# 显示、隐藏窗口对应的任务栏,需要的朋友可以参考下
    2021-10-10
  • C#实现压缩pdf文件的示例代码

    C#实现压缩pdf文件的示例代码

    PDF 文件如果文件太大则会影响传输效果同时也会占用过多磁盘空间,所以这篇文章主要为大家详细介绍了如何使用C#实现有效地压缩 PDF 文件,需要的可以参考下
    2023-11-11
  • C#读取二进制文件方法分析

    C#读取二进制文件方法分析

    这篇文章主要介绍了C#读取二进制文件方法,较为详细的分析了C#读取二进制文件的原理与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01

最新评论