Нужно ли закрывать C # BinaryWriter или BinaryReader в блоке using?

StackOverflow https://stackoverflow.com/questions/1079434

  •  21-08-2019
  •  | 
  •  

Вопрос

Имея этот код:

родовое слово

Нужно ли закрывать BinaryWriter?Если нет, то почему?

Это было полезно?

Решение

Пока все это заключено в блок using, вам не нужно явно вызывать Close.

Блок using обеспечивает удаление объекта, а методы Close и Dispose взаимозаменяемы в BinaryWriter.(Метод Close просто вызывает скрытый вызов Dispose.)

Другие советы

Помещение его в оператор using в соответствии с примером кода вызовет Dispose, который закрывает базовый поток, поэтому нет.Вы можете увидеть это через Reflector:

родовое слово

С помощью кода, который у вас есть, он закроет файл после выхода из блока using, поэтому вам не нужно явно вызывать close.

Единственная причина не использовать оператор using - это если вы хотите, чтобы файл все еще был открыт после того, как вы закончили с вашим BinaryWriter, и в этом случае вам следует придерживаться ссылки на него вместо того, чтобы передавать его в конструкторвот так.

Блок using автоматически закроет двоичный модуль записи и переведет его в состояние для сборки мусора.Использование блоков - это синтаксический сахар для самостоятельной обработки исключений и закрытия потока.

Если модуль записи заключен в блок using, закрытие произойдет автоматически при удалении модуля записи.Так что в этом случае вам не нужно явно закрывать писатель.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top