C # вложенный поток с использованием оператора, я должен использовать два с помощью? - PullRequest
2 голосов
/ 11 июня 2019

Я пишу фрагмент кода, который использует вложенный поток:

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))
{

}

1 Ответ

2 голосов
/ 11 июня 2019

Когда вы создаете ZlibStream и передаете MemoryStream, он содержит ссылку на него.

Когда его Disposed, он вызывает Close для этой ссылки, которая, в свою очередь, попадет вDispose * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 '*' * '*' '*' * ') "1015 * Уничтожен , он не переопределяет Close класса Stream.

Stream также проверяет, был ли уже вызван Dispose.Это означает, что в большинстве случаев вам нужно только Dispose поток , с которым вы работаете.

...