首页 新闻 会员 周边

关于.NET托管资源与非托管资源的问题

0
悬赏园豆:20 [已关闭问题] 解决于 2012-11-30 15:20

如果我自定义一个类:MySingleLogin

实例化以后它是托管对象还是非托管对象呢?

MySingleLogin alInfo = new MySingleLogin();

skybirdzw的主页 skybirdzw | 初学一级 | 园豆:3
提问于:2012-11-28 17:34
< >
分享
其他回答(2)
0

只要是由.NET分配了内存的对象都属于托管对象,也就是托管到GC,到时GC会自动释放这些资源

收获园豆:8
Rich.T | 园豆:3440 (老鸟四级) | 2012-11-28 17:35

托管是不是都实现了IDispose接口了呢? 我的意思都可以使用using来控制对象自动回收呢?

支持(0) 反对(0) skybirdzw | 园豆:3 (初学一级) | 2012-11-28 17:38

@skybirdzw: 

实现了IDispose的类,使用using之后会自动释放对象,也就是说实现了IDispose可以自由控制什么时候释放,当对象没释放,会由GC统一回收

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2012-11-28 17:40

@根总: 不好意思啊,我问的不是using和IDispose的作用,我的意思是.NET中的托管对象是不是都已经实现了IDispose接口?

支持(0) 反对(0) skybirdzw | 园豆:3 (初学一级) | 2012-11-28 17:48

@skybirdzw: 

前面我说过了呀。

只要是由.NET分配了内存的对象都属于托管对象,实现了IDispose是为了可以自由控制什么时候释放

并不是所有的托管对象都会去实现IDispose,比如int,string这些类型,都是托管对象,它们都没有实现IDispose

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2012-11-28 17:51

@根总: 只要是由.NET分配了内存的对象都属于托管对象,那非托管对象是不是没有分配了内存的对象呢?

支持(0) 反对(0) skybirdzw | 园豆:3 (初学一级) | 2012-11-28 18:04

非托这对象是指.net包装操作系统一些资源,比发FileStream文件流就是一个非托管资源,他要手动去关闭流,GC不会帮你回收

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2012-11-28 19:29
0
Qlin | 园豆:2403 (老鸟四级) | 2012-11-28 20:11
0

托管对象,一般我们定义的class,都是托管的,.net framework中有1500个类,但是只有100多个是非托管的,其他的都是托管的对象

收获园豆:4
chenping2008 | 园豆:9836 (大侠五级) | 2012-11-28 20:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册