Stream的Close问题??? public class test { public Stream sam; }像上面定义了这个test类,Stream类型的sam作为成员,例如new test后,我将把test类作为参数出入别的函数内,那里面的Stream的Close问题将怎么解决呢?3Q 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public abstract class Stream 基类通过继承由派生类实现其抽象方法 Stream s = new MemoryStream();s.Close(); 我不是说继承问题,我是说public Stream sam作为类的成员,而这个类将作为函数的参数传入函数里面,这个sam的close要在哪些写比较好呢? 我的意思是,要是在调用时刚好没写close函数的话,需要在定义test函数里写析构函数吗? 我的意思是,要是在调用时刚好没写close函数的话,需要在定义test类里写析构函数吗? 写在析构函数中,一个标准的做法就是实现IDispose接口,并提供析构函数,这样如果外面调用了Dispose,则可以关闭,忘记的话,在垃圾回收的时候执行析构函数也可以回收,例如:public class test:IDisposable{ public Stream sam; #region IDisposable 成员 public void Dispose() { if (sam == null) return; sam.Close(); sam = null; } ~test() { Dispose(); } #endregion} Stream这种东西就是一次性的用品,弄成成员变量实在是有点那个..........C#中的析构函数没有按规则办事的习惯,最好别指望析构函数去为你做一些重要的事情. 5 楼的答案是正确的。任何包含有非托管资源的类型,都应实现 IDisposable 接口。这意味着,该类型的使用者有责任调用 Dispose 方法来显示释放非托管资源。 android手机控制家电和灯 支持语音 关于c#中标签label的显示问题 vs2010看不到“新建项目的菜单”,“解决方案资源管理器”里看不到解决方案 C#窗体输入输出求助 TCP通讯高手帮忙想想 求一道编码题的解决方案 IE6为何浏览Css 结果不一样? 北京软件公司工作模式 我安装了sqlhelper,那么我该怎么把它弄到我新建的项目中呢?? 鼠标进入某一个区域,鼠标变手型出来就恢复怎么做啊? 怎样把用ASP.net web application做出来的网页保存下来? vs2005组件名称显示问题
通过继承由派生类实现其抽象方法
Stream s = new MemoryStream();s.Close();
而这个类将作为函数的参数传入函数里面,这个sam的close要在哪些写比较好呢?
函数里写析构函数吗?
类里写析构函数吗?
{
public Stream sam; #region IDisposable 成员 public void Dispose()
{
if (sam == null) return;
sam.Close();
sam = null;
} ~test()
{
Dispose();
} #endregion
}
这意味着,该类型的使用者有责任调用 Dispose 方法来显示释放非托管资源。