千家信息网

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

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,小编给大家分享一下C#中析构以及垃圾回收的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C# 的析构以及垃圾回收实
千家信息网最后更新 2025年11月16日C#中析构以及垃圾回收的示例分析

小编给大家分享一下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#中析构以及垃圾回收的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0