gpt4 book ai didi

c# - streamwriters 有 Close() 和 Dispose() 有什么意义?

转载 作者:太空狗 更新时间:2023-10-29 20:36:59 25 4
gpt4 key购买 nike

当您在事件的 StreamWriter 上调用 Close 时,将无法再向流中写入任何代码(因为它已关闭)。要打开另一个流,您必须创建 StreamWriter 的新实例,因为没有“Open”方法。

我的问题是,当您在关闭流后除了 Dispose 之外无法真正使用任何东西时,使用 CloseDispose 有什么意义?

如果有 Open 功能,我能理解,即您可以关闭一个文件,然后使用相同的 StreamWriter 打开另一个文件。但是因为只有 Close 并且之后你不能真正使用除了 Dispose 之外的任何东西,为什么不干脆去掉 Close 并使用 Dispose 关闭底层流作为它的第一个 Action ?

我知道 Dispose 来自 IDisposeable 等等。我想知道的是,当 Dispose 似乎调用 Close 时,为什么特别需要 Close

据我所知,无法使用相同的 StreamWriter 打开另一个流,当您别无选择时,Close 毫无意义Dispose 之后,因为所有其他方法都变得无用。

StreamWriter 可以将 CloseDispose 合并到一个方法中时,为什么 StreamWriter 还要麻烦 Close

最佳答案

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

当然 可能 类已经显式实现了 IDisposable,这样如果没有转换为 Dispose 方法就不会存在IDisposable,我已经清除了一些困惑,但他们选择不这样做,并在类中留下两个重复的方法。

是否使用DisposeClose 关闭流完全取决于您的个人喜好。

关于c# - streamwriters 有 Close() 和 Dispose() 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14058071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com