黑马程序员技术交流社区

标题: GC 析构函数 using Dispose close [打印本页]

作者: 胡元江    时间: 2013-2-25 19:45
标题: GC 析构函数 using Dispose close
请教下童鞋们你们对于C# 的GC    和Dispose是怎么理解的。 不要复制你的文档了。就说说自己的理解。。。有代码标示更好!谢谢。谢谢

作者: 岳珅    时间: 2013-2-25 22:13
额。。。
close只是单纯的关闭,还可以用open再打开。。。
而dispose就是彻底的销毁,从内存空间中释放资源了。。。

这个老师是在ado.net的视频里专门花了好长的时间讲解的,如果还是不了解,去看下视频吧0.0
作者: 胡元江    时间: 2013-2-25 22:32
额。这个我好像看过 不过我其实是想了解下GC 到底是在什么情况下回收垃圾。以及GC 和我们所用的using(){}  dispose之类就是就是一个东西 。其实如果说简单的就这么用我知道怎么用,但是感觉好像知其然不知其所以然。所以可能是我表达上有问题让各位误解 了
作者: 安玉波    时间: 2013-2-25 23:05
C/C++中由程序员进行对象的回收像学校食堂中由学生收盘子,.Net中由GC进行垃圾回收像餐馆中店员去回收。
GC是垃圾收集器(Garbage Collection)。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC进行回收,必须由程序员手工回收,一个例子就是FileStream或者SqlConnection需要程序员调用Dispose进行资源的回收。
要请求垃圾收集,可以调用下面的方法:GC.Collect()一般不需要手动调用GC.Collect()。当一个对象没有任何变量指向(不再能使用)的时候就可以被回收了。

基础知识:当没有任何变量指向一个对象的时候对象就可以被回收掉了,但不一定会立即被回收。
            object obj = new object();//只有new才会有新对象
            Console.WriteLine(obj);

            object obj2 = obj;
            obj = null;
            obj2 = null;
            Console.WriteLine();

以上回答出自传智播客面试宝典.希望能帮到你。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2