您的位置:首页 > 编程语言 > C#

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

2017-10-10 11:46 381 查看
    在开发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子句就会发挥作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: