C# using 實現強制資源清理

來源:互聯網
上載者:User

一、總述:

使用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

}      

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.