源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-05-10 14:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C# 的析构以及垃圾回收实例分析
[b]C# 的析构以及垃圾回收实例分析[/b] 看书时,自己写的例子代码,了解到几个知识点,记载下来。同时发现自己手写代码的能力比较弱,还是得多写一下。
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方法,目的是“不用户不再使用对象时,要手工调用它” 比如文件打开,数据库访问等。需要及时释放。 明显这个概念和垃圾回收是两个概念。释放后,该对象仍然存在,有待运行环境来回收,见最后一行。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部