如果我有以下情况:
StreamWriter MySW = null; try { Stream MyStream = new FileStream("asdf.txt"); MySW = new StreamWriter(MyStream); MySW.Write("blah"); } finally { if (MySW != null) { MySW.Flush(); MySW.Close(); MySW.Dispose(); } }
MySW.Dispose()即使提供了关闭服务,我也可以打电话并跳过它吗?是否有任何Stream隐含无法按预期工作(例如CryptoStream)?
MySW.Dispose()
如果没有,那么下面的代码就是错误的:
using (StreamWriter MySW = new StreamWriter(MyStream)) { MySW.Write("Blah"); }
我是否可以仅调用MySW.Dispose()并跳过Close(即使提供了它)?
是的,这就是它的目的。
是否有任何Stream实施无法按预期工作(例如CryptoStream)?
可以肯定地假设,如果一个对象实现IDisposable,它将正确处理自己。
IDisposable
如果不是,那将是一个错误。
不,该代码是处理实现的对象的推荐方式IDisposable。
有关“完成并处置”的公认答案中提供了更出色的信息-调用哪个?