2016-04-16 2 views
1

Я понимаю, что если я работаю с BinaryWriter, и объявляю его «use» вместо «let», он автоматически вызовет метод «Dispose», когда я закончите с ним. Этот Dispose также вызывает «Закрыть» в BinaryWriter, или мне нужно также вызвать Close, чтобы гарантировать, что базовые потоки также закрыты?Если я использую BinaryWriter, мне также нужно вызвать Close? - F #

use byteWriter = new BinaryWriter(new MemoryStream(bytes)) 
[1;2;3] |> List.iter(fun s -> byteWriter.Write(int16(s))) 
byteWriter.Close() // is this needed? 

ответ

3

В documentation для BinaryWriter.Close состояний:

Этой реализация волоска метода Dispose проходящего истинного значения.

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

Если вы посмотрите на source for BinaryWriter, вы можете увидеть, что Close и Dispose оба просто звоните Dispose(true).

Смежные вопросы