天天看点

using 释放资源

我们知道使用C#程序访问数据库资源需要几个步骤:创建连接,打开连接,访问数据库,关闭连接,基本架构如下:

SqlConnection conn = new SqlConnection(connString)
try 
{
  conn.Open();
//省略访问数据库代码..
}
catch (Exception ex)
{
  throw ex;
}
finally
{
  conn.Close();
}      

数据库连接通常建立在通常有限的服务器资源,所以释放之后要及时关闭。

在代码中,finally块中调用Close()方法释放连接,确保即使没有异常发生,连接诶也能被释放。

using 语句两个作用:

作为关键字,using可以导入命名空间。

作为C#语句,using可以释放对象的占有的内存资源。

基本语法如下:

using(SqlConnection conn = new SqlConnection(connString))

 {

  //数据库代码操作

}

using语句允许用户定义一个范围,并在范围末尾处释放对象。

using可以主动释放的对象都需要实现IDisable接口。

即使都实现了IDisable接口,也没有必要全部使用using。我们只对那些对系统性能有重要影响的对象进行using限定,而其他对象可以交给垃圾回收器处理。

(1)此类实现了接口IDisposable(这个接口只有一个方法void Dispose()),当这个类在using中实例化的时候,using代码块结束时会自动调用这个类中实现了接口IDisposable的Dispose()方法。Dispose()方法中常用来做些释放资源的动作。

看看下面的一个简单的例子:

using System;  
  
class Program  
{  
    public static void Main(string[] args)  
    {  
        using (Test test = new Test())  
        {  
            Console.WriteLine("Disposable is open!");  
        }  
  
        Console.WriteLine("Disposable is none!");  
        Console.ReadKey();  
    }  
}  
  
public class Test:IDisposable  
{  
 
    #region IDisposable 成员  
  
    public void Dispose()  
    {  
        Console.WriteLine("Disposable is close!");  
    }  
 
    #endregion  
}      

输出结果如下:

Disposable is open!
Disposable is close!
Disposable is none!      

转载于:https://www.cnblogs.com/baixingqiang/p/5473516.html