C#语言中的Using语句块确保资源被释放

    在开发C#的过程中,.NET在对象不再引用之后,清理它们的方法是使用非析构方式。

    在C++中,对象只要使用完毕,就会自动调用其析构函数。这对于基于资源的类的设计人员是非常好的消息,因为如果用户忘记关闭资源,则最好使用析构函数。只要对象使用完毕,就会调用C++析构函数。所以,例如,如果出现了异常,但没有捕获,有析构函数的对象就会调用它们的析构函数。

    在C#和其它托管语言中,没有自动的、决定性的析构的概念,面是有一个垃圾回收器,它会在未来的某个时刻释放资源。它是非决定性的,国为我们不能确定这个过程在什么时候发生。如,忘记关闭数据库连接可能会导致.NET可执行程序的各种问题。幸运的是,我们还有解决办法。下面的代码说明了如何使用Using语句块确保在退出块后立即释放实现IDisposable接口的对象。

String connectionstring=”server=(local);integrated security=SSPI;database=Northwind”;

Using(SqlConnection conn=new SqlConnection(connectionstring))  

{

//打开连接

Conn.Open;

//执行某些代码

}

    在这个实例中,无论块是,using语句块都会确保关闭数据库连接。

    查看连接类的Dispose()方法的IL代码,它们都检查连接对象的当前状态,如果其状态为打开,就调用Close()方法。

    在编程时,无论在哪里获得资源,最好都使用using()语句块,因为尽管我们都打算编写释放资源的语句,但有时会忘记,并且出现异常时using子句就会发挥作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掌控自身命运

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值