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
您可能感兴趣的文章
- 01-10C#通过反射获取当前工程中所有窗体并打开的方法
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#停止线程的方法
- 01-10WinForm实现仿视频播放器左下角滚动新闻效果的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的方法
- 01-10C#实现清空回收站的方法
- 01-10C#实现读取注册表监控当前操作系统已安装软件变化的方法
- 01-10C#实现多线程下载文件的方法
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery
- 01-10C#中split用法实例总结
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-11ajax实现页面的局部加载
- 01-10SublimeText编译C开发环境设置
- 08-05DEDE织梦data目录下的sessions文件夹有什