程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#尺度idispose形式應用示例

c#尺度idispose形式應用示例

編輯:C#入門知識

c#尺度idispose形式應用示例。本站提示廣大學習愛好者:(c#尺度idispose形式應用示例)文章只能為提供參考,不一定能成為您想要的結果。以下是c#尺度idispose形式應用示例正文


IDispose形式在C++頂用的許多,用來清算資本,而在C#裡,資本分為托管和非托管兩種,托管資本是由C#的CLR贊助我們清算的,它是經由過程挪用對象的析構函數完成的對象釋下班作,而關於非托管體系來講,則須要我們本身來釋放,例如數據庫銜接對象,這就須要我們手動去挪用它的Dispose()辦法來完成對象它的釋放,現實上,Dispose()內容究竟做了甚麼事,我們其實不清晰,固然這就是面向對象,它不願望你關系完成的細節,呵!

關於我們開辟人員來講,在懂得它怎樣用以後,總會對它若何完成的發生興致,上面,我將把C#裡完成IDispose形式的代碼展示出來,年夜家一路來進修一下,現實上,它的應用場所也許多的,當我們手動對網站,數據庫作封裝時,都邑用的到,上面看一下代碼:


/// <summary>
    /// 完成IDisposable,對非托管體系停止資本收受接管
    /// </summary>
    public class IDisplosePattern : IDisposable
    {
        public void Dispose()
        {
            this.Dispose(true);////釋放托管資本
            GC.SuppressFinalize(this);//要求體系不要挪用指定對象的終結器. //該辦法在對象頭中設置一個位,體系在挪用終結器時將檢討這個位
        }

        protected virtual void Dispose(bool disposing)
        {
            if (!_isDisposed)//_isDisposed為false表現沒有停止手動dispose
            {
                if (disposing)
                {
                    //清算托管資本
                }
                //清算非托管資本
            }
            _isDisposed = true;
        }

        private bool _isDisposed;

        ~IDisplosePattern()
        {
            this.Dispose(false);//釋放非托管資本,托管資本由最終器本身完成了
        }
    }

經由過程下面的代碼,我們曉得了,關於托管體系(C#的CLR為我們治理的),直接經由過程~IDisplosePattern()辦法停止釋放,而~IDisplosePattern()這個辦法什麼時候被挪用,我們是不曉得的,由於它是由CLR贊助我們挪用的,而我們手動停止dispose辦法時,它會挪用dispose(true)這個重載辦法,它會贊助我們清算托管和非托管資本。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved