【发布时间】:2011-10-17 11:27:54
【问题描述】:
不知道怎么查,例如:
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
【问题讨论】:
标签: c# stream dispose word-wrap