gpt4 book ai didi

c# - 将流包装在流中 - 包装后的流会被正确处理吗?

转载 作者:行者123 更新时间:2023-12-04 20:15:23 25 4
gpt4 key购买 nike

我不知道如何检查,例如:

using (var stream = new StreamWriter(someStream))
{
stream.Write("");
}

这会像这样吗:

using (var stream1 = someStream)
{
using (var stream2 = new StreamWriter(stream1))
stream.Write("");
}

或者如果我将其包装到 GZipStream 或任何其他流中...第一个示例会处理每个底层流吗?

更新:

最后它击中了我 - 我自己实现了 Stream 类:

class MyStream : Stream
{
// fake stream implementation

protected override void Dispose(bool disposing)
{
Console.WriteLine("disposing in my class");
base.Dispose(disposing);
}
}

class Program
{
static void Main(string[] args)
{
MyStream stream = new MyStream();
DoSomething(stream);
stream.Dispose();

Console.WriteLine("end of program");
}

private static void DoSomething(Stream stream)
{
using (var writer = new StreamWriter(stream))
{
Console.WriteLine("inside using statement");
}

Console.WriteLine("after writing");
}
}

结果:

inside using statement
disposing in my class
after writing
disposing in my class
end of program

最佳答案

在最顶部的流上调用 close 会向下级联,并将全部关闭,但不建议这样做,因为很难密切关注打开的内容和未打开的内容。正如另一个回答者所说,虔诚地使用 using block 。

希望这有帮助!

关于c# - 将流包装在流中 - 包装后的流会被正确处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6899307/

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