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

C# 的析构以及垃圾回收实例分析,第1张

概述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# 的析构以及垃圾回收实例分析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1255671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存