Dispose 的影响力

hetengfei_ 2012-03-25 11:52:36
//\Dispose 的影响力\//

FileStream fs = new FileStream(@"D:\My File.dat", FileMode.Open);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("It is just a test");
sw.Flush();
sw.Close();
fs.Close();
fs.Dispose();//如果我忘写了这一行, 会怎样? 内存会泄漏吗? 会死机吗? 难道.net 内部机制 不会 主动Dispose ?


用请大侠们说说,谢谢。
...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
porschev 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 hetengfei_ 的回复:]
//\Dispose 的影响力\//

C# code
FileStream fs = new FileStream(@"D:\My File.dat", FileMode.Open);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("It is just a test");
sw.Flush();
sw.Close();
fs.C……
[/Quote]

FileStream这个类来Close()方法和Dispose ()方法没有区别

它们都继承于Stream类。。。调用close就行。。。

public virtual void Close()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}

public void Dispose()
{
    Close();
}
threenewbee 2012-03-25
  • 打赏
  • 举报
回复
会不会内存泄漏取决于这个对象是否使用了非托管的内存。
一般来说,系统内置的类都有防呆的设计,比如你说的FileStream,在解析函数中会调用Dispose的。
hetengfei_ 2012-03-25
  • 打赏
  • 举报
回复
还用,当我 把程序 关了;
那个
fs 占用的FileStream 流
会不会 随之释放?
dalmeeme 2012-03-25
  • 打赏
  • 举报
回复
一般不用Dispose,直接Close就行了。

也不会先Close,再Dispose,这其实是多余的写法。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧