当您在事件的 StreamWriter
上调用 Close
时,将无法再向流中写入任何代码(因为它已关闭)。要打开另一个流,您必须创建 StreamWriter
的新实例,因为没有“Open”方法。
我的问题是,当您在关闭流后除了 Dispose
之外无法真正使用任何东西时,使用 Close
和 Dispose
有什么意义?
如果有 Open
功能,我能理解,即您可以关闭一个文件,然后使用相同的 StreamWriter
打开另一个文件。但是因为只有 Close
并且之后你不能真正使用除了 Dispose
之外的任何东西,为什么不干脆去掉 Close
并使用 Dispose
关闭底层流作为它的第一个 Action ?
我知道 Dispose
来自 IDisposeable
等等。我想知道的是,当 Dispose
似乎调用 Close
时,为什么特别需要 Close
。
据我所知,无法使用相同的 StreamWriter
打开另一个流,当您别无选择时,Close
毫无意义Dispose
之后,因为所有其他方法都变得无用。
当 StreamWriter
可以将 Close
和 Dispose
合并到一个方法中时,为什么 StreamWriter
还要麻烦 Close
?
最佳答案
在处理流时,有一个长期存在的约定,即 Close
是他们必须关闭流的一种方法。这是许多程序员在处理流时习惯并期望看到的术语。没有 Close
方法的流可能会造成混淆,人们可能需要一些时间才能意识到他们应该使用 Dispose
来关闭流。
当然 可能 类已经显式实现了 IDisposable
,这样如果没有转换为 Dispose
方法就不会存在IDisposable
,我已经清除了一些困惑,但他们选择不这样做,并在类中留下两个重复的方法。
是否使用Dispose
或Close
关闭流完全取决于您的个人喜好。
关于c# - streamwriters 有 Close() 和 Dispose() 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14058071/