A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡元江 中级黑马   /  2013-2-25 19:45  /  1914 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请教下童鞋们你们对于C# 的GC    和Dispose是怎么理解的。 不要复制你的文档了。就说说自己的理解。。。有代码标示更好!谢谢。谢谢

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

3 个回复

倒序浏览
额。。。
close只是单纯的关闭,还可以用open再打开。。。
而dispose就是彻底的销毁,从内存空间中释放资源了。。。

这个老师是在ado.net的视频里专门花了好长的时间讲解的,如果还是不了解,去看下视频吧0.0

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
额。这个我好像看过 不过我其实是想了解下GC 到底是在什么情况下回收垃圾。以及GC 和我们所用的using(){}  dispose之类就是就是一个东西 。其实如果说简单的就这么用我知道怎么用,但是感觉好像知其然不知其所以然。所以可能是我表达上有问题让各位误解 了
回复 使用道具 举报
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();

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

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马