스트림 내에서 스트림 배치 - 래핑 된 스트림이 올바르게 배치됩니까?
또는 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
downvoter .... 왜? 내가 말한 것은 정확하다. IDisposable을 구현하는 객체에 * 의존하지 말아야한다. 모든 멤버/매개 변수 IDisposable 객체에 Dispose를 호출한다. –
글쎄요, 클래스를 래핑하지 않아도 충돌을 일으킬 수 없다는 것을 말하는 것과 같습니다. 끊임없이 행동하는 데 의존 할 수없는 프레임 워크를 사용하는 이유는 무엇입니까? – argh
그의 예제에서 사용 된 클래스의 경우에는 괜찮습니다.하지만 OP가 의미를 가지면 IDisposable 개체의 모든 조합에 문제가 없으므로 문제가 발생합니다. –