Мы должны закрыть C# BinaryWriter или BinaryReader в блоке использования?

Синтаксис больше не поддерживается в Python 3. Вместо этого используйте следующее.

try:
    do_something()
except BaseException as e:
    logger.error('Failed to do something: ' + str(e))
9
задан John Saunders 3 July 2009 в 03:40
поделиться

5 ответов

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

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

18
ответ дан 30 October 2019 в 04:37
поделиться

Putting it in a using statement as per your code example will call Dispose, which closes the underlying stream, so no. You can see this through Reflector:

protected virtual void Dispose(bool disposing)
{
    if (disposing)
    {
        this.OutStream.Close();
    }
}
4
ответ дан 30 October 2019 в 04:37
поделиться

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

0
ответ дан 30 October 2019 в 04:37
поделиться

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

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

4
ответ дан 30 October 2019 в 04:37
поделиться

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

0
ответ дан 30 October 2019 в 04:37
поделиться
Другие вопросы по тегам:

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