会触发其Dispose函数,理论上不用close,但如过是写操作我碰到过莫名不能保存所有数据的问题,所以现在写代码有强迫症,会先调Flash,然后掉Close. using (var stream = new FileStream(...))
{
// 某些操作
stream.Flush();
stream.Close();
}
{
// 某些操作
stream.Flush();
stream.Close();
}
]public virtual void Close()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}[/code]public void Dispose()
{
this.Close();
}
从代码中可以看到Dispose中调用了Close,因此lz可以放心了。
{
// use a
}
相当于
A a = new A();
try
{
// use a
}
finally
{
a.Dispose();
}使用using 跟它调不调用Close()没有任何关系 使用using 只会调用Dispose()方法
只是对于所有的Stream及其派生类来讲 Dispose()和Close()实现功能一样 (有些类就不一样 比如SqlConnection)
Close方法只是ms为了一些不懂Dispose方法而写的。因为File.Open、File.Close更符合语义,要是给套文件的api你,你第一时间想到关闭文件肯定是Close而不是Dispose。