gpt4 book ai didi

C# 嵌套流与 using 语句,我应该使用两个 using 吗?

转载 作者:行者123 更新时间:2023-11-30 22:54:08 28 4
gpt4 key购买 nike

我正在编写一段使用嵌套流的代码:

using (var zip = new ZlibStream(new MemoryStream(to_be_unziped), CompressionMode.Decompress))
{

}

还好吗?或者我应该把它写成:

using (var memory_stream = new MemoryStream(to_be_unziped))
using (var zip = new ZlibStream(memory_stream, CompressionMode.Decompress))
{

}

最佳答案

当您创建 ZlibStream并传入 MemoryStream它持有对它的引用。

当它是 Disposed , 它调用 Close在该引用上,这又将达到 Dispose 摘要 的管道 Stream类。

protected override void Dispose(bool disposing)
{
try
{
if (!_disposed)
{
if (disposing && (this._baseStream != null))
this._baseStream.Close();
_disposed = true;
}
}
finally
{
base.Dispose(disposing);
}
}

值得注意的是,MemoryStream无论如何都没有非托管资源,实际上不需要处置,它不会覆盖 CloseStream类。

Stream还检查是否 Dispose已经被调用了。这意味着在大多数情况下,您只需 Dispose您正在使用的

关于C# 嵌套流与 using 语句,我应该使用两个 using 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56537127/

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