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)這個重載辦法,它會贊助我們清算托管和非托管資本。