欢迎来到入门教程网!

C#教程

当前位置:主页 > 软件编程 > C#教程 >

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

来源:本站原创|时间:2020-01-10|栏目: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方法,目的是“不用户不再使用对象时,要手工调用它”
比如文件打开,数据库访问等。需要及时释放。

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

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

上一篇:C#实现的阴历阳历互相转化类实例

栏    目:C#教程

下一篇:详解C#中的System.Timers.Timer定时器的使用和定时自动清理内存应用

本文标题:C# 的析构以及垃圾回收实例分析

本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/5625.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有