软件编程
位置:首页>> 软件编程>> C#编程>> C# 的析构以及垃圾回收实例分析

C# 的析构以及垃圾回收实例分析

作者:lqh  发布时间:2021-12-22 19:03:37 

标签:C#,析构,垃圾回收

C# 的析构以及垃圾回收实例分析

看书时,自己写的例子代码,了解到几个知识点,记载下来。同时发现自己手写代码的能力比较弱,还是得多写一下。


using System;
namespace ConsoleApplication
{
 public class Program
 {
   public static void Main(string[] args)
   {
     Console.WriteLine("Hello World!");
     fun();
     GC.Collect();                //4、若不显式回收,则控制台不打印回收行。
     Console.WriteLine("end!");
   }
   public static void fun(){            //1、此处必须有static
     A a=new A();
     a.Dispose();
     //GC.Collect();               //3、此处回收无效,因为a还没释放
   }
   public class A:IDisposable{
    /* protected override void Finalize(){     //2、析构实际是重载Finalize,但不能直接写重载。编译器自动重写Finalize,所以代码中,只能用 析构函数。    
        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!

这个回收像极了异步调用!

2、IDisposable接口的Dispose方法,目的是“不用户不再使用对象时,要手工调用它”
比如文件打开,数据库访问等。需要及时释放。

明显这个概念和垃圾回收是两个概念。释放后,该对象仍然存在,有待运行环境来回收,见最后一行。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:https://my.oschina.net/u/1540190/blog/734409

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com