Вопрос по memorystream, c#, using, using-statement – MemoryStream в операторе использования - нужно ли вызывать close ()

34

При использовании потока памяти в операторе using нужно ли вызывать close? Например, нужна ли здесь ms.Close ()?

  using (MemoryStream ms = new MemoryStream(byteArray)) 
    {  
      // stuff 

      ms.Close(); 
    }
Возможный даб:stackoverflow.com/questions/911408/… sloth

Ваш Ответ

2   ответа
7

When using a memory stream in a using statement do I need to call close?

Нет, тебе не нужно. Это будет вызвано.Dispose() метод, который автоматически вызывается:

using (MemoryStream ms = new MemoryStream(byteArray)) 
{  
    // stuff 
}
@HenkHolterman На самом делеDispose() звонкиClose() который в свою очередь вызываетDispose(true).
55

Нет, это не так.

using гарантирует, чтоDispose() будет называться, что в свою очередь вызываетClose() метод.

Вы можете предположить, что все виды потоков закрываютсяusing заявление.

ОтMSDN:

When you use an object that accesses unmanaged resources, such as a StreamWriter, a good practice is to create the instance with a using statement. The using statement automatically closes the stream and calls Dispose on the object when the code that is using it has completed.

Я понимаю, что это старый, но я бы хотел добавить, что.Close() в добавок кusing также вызовет предупреждение анализа кода "CA2202: не выбрасывайте объекты несколько раз". Для получения дополнительной информации прочитайте & quot; Причину & quot; раздел здесь:msdn.microsoft.com/query/…
Dispose () вызывает метод Close (), который вызывает Dispose (логическое значение).
Разве это не наоборот? Тот.Close() позвоню.Dispose()? msdn.microsoft.com/en-us/library/…

Похожие вопросы