C# 的析构以及垃圾回收实例分析
发布时间:2020-12-15 06:03:45 所属栏目:百科 来源:网络整理
导读:C# 的析构以及垃圾回收实例分析 看书时,自己写的例子代码,了解到几个知识点,记载下来。同时发现自己手写代码的能力比较弱,还是得多写一下。 using System;namespace ConsoleApplication{ public class Program { public static void Main(string[] args)
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方法,目的是“不用户不再使用对象时,要手工调用它” 明显这个概念和垃圾回收是两个概念。释放后,该对象仍然存在,有待运行环境来回收,见最后一行。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |