【发布时间】:2009-03-20 17:18:19
【问题描述】:
我知道这里有很多关于如何使用 using 语句和调用 Dispose() 方法的线程。我已经阅读了这些主题的大部分内容。
如果我调用 Dispose(),它会调用 Close() 吗?
如果我想使用一个对象(比如 SqlDataReader),然后在另一个代码块中再次使用它,我应该不调用 Dispose() 吗?这也意味着省略 using 语句。
另外,澄清一下,如果 FileStream 正在包装 StreamWriter 并且我在 FileStream 上调用 dispose,这将调用 Flush()、Close() 和 Dispose()(取决于 Dispose() 是否调用 Close()) StreamWriter,对吧?同样,如果我在 FileStream 上调用 Close,这只会在 FileStream 上调用 Flush() 和 Close()。
检查 IL 是否是回答这些关于幕后发生的问题的好方法?
【问题讨论】:
-
当您说“FileStream 正在包装 StreamWriter”时,我相信您实际上是指“Stream 类的实现中的 FileStream”?或者你是用你的自定义类包装 StreamWriter 吗?
-
我的意思是类似 FileStream fs = sw.Write(其中 sw 是 StreamWriter),但 Write() 返回 void。
标签: c# .net idisposable