一、總述:
使用using語句,定義一個範圍,在範圍結束時處理對象 (該對象必須實現了IDisposable介面)。
其功能和try ,catch,finally完全相同。
二、用法:
using (Class1 c = new Class1())
{
}//在範圍結束時清理非託管不受GC控制的資源
其與下面的try…catch…finallya功能一樣
Class1 f = new Class1();
try
{ //執行代碼
}
catch()
{
//異常處理
}
finally
{
f.Disposable();
}
例如:
using (SqlConnection cn = new SqlConnection(SqlConnectionString)){......}//資料庫連接
using (SqlDataReader dr = db.GetDataReader(sql)){......}//DataReader
//PS:這裡SqlConnection和SqlDataReader對象都預設實現了IDisposable介面,如果是自己寫的類,那就要自己手動來實現IDisposable介面。比如:
using (Employee emp = new Employee(userCode))
{
//......
}
//Emlpoyee.cs類:
public class Employee:IDisposable
{
實現IDisposable介面#region 實現IDisposable介面
/**//// <summary>
/// 通過實現IDisposable介面釋放資源
/// </summary>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
/**//// <summary>
/// 釋放資源實現
/// </summary>
/// <param name="disposing"></param>
protected virtual void Dispose(bool disposing)
{
if (!m_disposed)
{
if (disposing)
{
// Release managed resources
if(db!=null)
this.db.Dispose();
if(dt!=null)
this.dt.Dispose();
this._CurrentPosition = null;
this._Department = null;
this._EmployeeCode = null;
}
// Release unmanaged resources
m_disposed = true;
}
}
/**//// <summary>
/// 解構函式
/// </summary>
~Employee()
{
Dispose(false);
}
private bool m_disposed;
#endregion
}