为何有些类中有Dispose方法?

在使用Stream对象,transactionScop,socket对象时,我们往往会发现在它的内部有一个Dispose()方法,它是干什么用的呢?这要从微软的代码托管开始说起,所谓托管,就是不需要程序员自己去干涉内部分配与销毁,从对象的建立到销毁的过程完全由.net来帮我们去实现。

.net为提供的类库有两种,即“托管类库”和“非托管类库”,像自定义的类,值类型等,它一般来说,执行的结果可以预知,这时.net帮助我们去管理对象;而如果你要实现,网络上的传递,文件的传递,向服务器发包这些操作,都是系统未知的,即不知道什么时候能执行结束,这时,它们的对象释放,则需要自己去实现,例如:

1 using System;
2 public void Dispose ()
3 {
4     this.Dispose (true);
5     GC.SuppressFinalize (this);
6 }

这是mvc构造中controller类的实现,它也是非托管的类库,与此同时,还是stream。

事实上,今天通过一个小例子,让我们知道了,.net中不是所有的对象都是可以先被定义的。

posted @   张占岭  阅读(1936)  评论(5编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示