c# 的析构以及垃圾回收2、3事!
2016-08-18 00:00
375 查看
看书时,自己写的例子代码,了解到几个知识点,记载下来。同时发现自己手写代码的能力比较弱,还是得多写一下。
5、该代码的输出为:
这个回收像极了异步调用!
6、IDisposable接口的Dispose方法,目的是“不用户不再使用对象时,要手工调用它”
比如文件打开,数据库访问等。需要及时释放。
明显这个概念和垃圾回收是两个概念。释放后,该对象仍然存在,有待运行环境来回收,见最后一行。
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!"); } } } }
5、该代码的输出为:
Hello World! some one disposed! end! some one Finalize!
这个回收像极了异步调用!
6、IDisposable接口的Dispose方法,目的是“不用户不再使用对象时,要手工调用它”
比如文件打开,数据库访问等。需要及时释放。
明显这个概念和垃圾回收是两个概念。释放后,该对象仍然存在,有待运行环境来回收,见最后一行。
相关文章推荐
- C# 的析构以及垃圾回收实例分析
- C#垃圾回收和析构函数以及弱引用
- 关于C#的垃圾回收以及List动态数组的用法。
- c#学习笔记-.net垃圾回收机制
- [转]对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会
- 浅谈C#的垃圾回收----关于GC、析构函数、Dispose、and Finalize
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会
- C#精髓【月儿原创】第一讲 使用垃圾回收器
- 理解C#垃圾回收机制
- c#中的垃圾回收
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会【个人复习+zz】
- 析构函数和垃圾回收器在C#中的运用
- JVM内存模型以及垃圾回收
- Java与C#的垃圾回收机制
- C#垃圾回收之二次回收机制
- Java与C#的垃圾回收机制
- Java与C#的垃圾回收机制
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会(转)