具有Close()和Dispose()的streamwriters有什么意义?

Pha*_*rap 7 .net c# vb.net com visual-c++

当你调用Close一个活动StreamWriter时,它就不可能再向流写入代码了(因为它已被关闭).要打开另一个流,您必须创建一个新的实例,StreamWriter因为没有'Open'方法.

我的问题是,什么是在具有点CloseDispose当你真的不能使用任何东西,除了Dispose关闭流后?

我能理解是否有一个Open函数,即你可以关闭一个文件然后使用相同的文件打开另一个文件StreamWriter.但是因为Close除了Dispose之后你还不能真正使用任何东西,为什么不放弃CloseDispose关闭底层流作为它的第一个动作呢?

我收到Dispose来自IDisposeable和所有.我想知道的是,为什么CloseDispose看起来Close无论如何都要特别需要.

据我所知,如果没有打开另一个流的能力StreamWriter,没有任何意义,因为所有其他方法都变得无用Close,Dispose之后你别无选择.

为什么是,StreamWriter有什么麻烦事Close时,他们可以合并CloseDispose成一个单一的方法?

Ser*_*rvy 2

在处理流时,有一个长期存在的约定,那Close就是必须关闭流的方法。这是许多程序员在处理流时习惯并期望看到的术语。拥有一个没有方法的流可能会造成混乱Close,并且人们可能需要一些时间才能意识到他们应该使用它Dispose来关闭流。

该类当然有可能显式实现IDisposable,因此如果Dispose没有强制转换,该方法就不会存在IDisposable,并且我已经消除了一些混乱,但他们选择不这样做,并将两个重复的方法留在班上。

Dispose使用或Close关闭流完全取决于您的个人喜好。

  • “Close”实际上只是 .NET 1.0 在其约定被取消之前的一个更友好的名称残余。微软此后表示,为了实现各种 API 之间的一致性,应该首选“Dispose”,并且从那以后就没有编写功能重复的“Close”方法。 (2认同)