C# 的析構(gòu)以及垃圾回收實(shí)例分析
C# 的析構(gòu)以及垃圾回收實(shí)例分析
看書時(shí),自己寫的例子代碼,了解到幾個(gè)知識(shí)點(diǎn),記載下來。同時(shí)發(fā)現(xiàn)自己手寫代碼的能力比較弱,還是得多寫一下。
using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine("Hello World!"); fun(); GC.Collect(); //4、若不顯式回收,則控制臺(tái)不打印回收行。 Console.WriteLine("end!"); } public static void fun(){ //1、此處必須有static A a=new A(); a.Dispose(); //GC.Collect(); //3、此處回收無效,因?yàn)閍還沒釋放 } public class A:IDisposable{ /* protected override void Finalize(){ //2、析構(gòu)實(shí)際是重載Finalize,但不能直接寫重載。編譯器自動(dòng)重寫Finalize,所以代碼中,只能用 析構(gòu)函數(shù)。 Console.WriteLine("some one disposed!"); }*/ ~A(){ Console.WriteLine("some one Finalize!"); } public void Dispose(){ Console.WriteLine("some one disposed!"); } } } }
1、該代碼的輸出為:
Hello World! some one disposed! end! some one Finalize!
這個(gè)回收像極了異步調(diào)用!
2、IDisposable接口的Dispose方法,目的是“不用戶不再使用對(duì)象時(shí),要手工調(diào)用它”
比如文件打開,數(shù)據(jù)庫訪問等。需要及時(shí)釋放。
明顯這個(gè)概念和垃圾回收是兩個(gè)概念。釋放后,該對(duì)象仍然存在,有待運(yùn)行環(huán)境來回收,見最后一行。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
C# webservice接口編寫、發(fā)布與測(cè)試
這篇文章主要介紹了C# webservice接口編寫、發(fā)布與測(cè)試,文章通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或共組有一定的幫助,需要的朋友可以參考下2024-07-07c# 判斷指定文件是否存在的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了c# 判斷指定文件是否存在的簡(jiǎn)單實(shí)現(xiàn),需要的朋友可以參考下2014-02-02C# MeasureString測(cè)量字符串函數(shù)的使用方法
這篇文章主要介紹了C# MeasureString測(cè)量字符串函數(shù)的使用方法,需要的朋友可以參考下2014-10-10C#多線程學(xué)習(xí)之(一)多線程的相關(guān)概念分析
這篇文章主要介紹了C#多線程學(xué)習(xí)之多線程的相關(guān)概念,涉及C#中多線程的相關(guān)概念與使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04