В конечном счете, цель Dispose()
в этом случае состоит в том, чтобы позволить XmlWriter
принять право собственности на все, что он записывает - например, если вы создаете XmlWriter
поверх Stream
, вызов Dispose()
на XmlWriter
может (по умолчанию) flu sh xml Writer , а затем вызов Dispose()
в потоке . Это позволяет легко передавать XmlWriter
в API, и при этом не нужно передавать им цепочку других объектов, которые они должны располагать по завершении (например, это может быть XmlWriter
, говорящий с CompressionStream
говорить с SslStream
говорить с NetworkStream
, et c).
В общий случай , цель Dispose()
на окончательном конце - закрыть базовый ресурс (который может быть файлом, сокетом, каналом и т. д. c)
В этом конкретном c случае вы говорите с StringBuilder
. Dispose()
здесь в основном не работает, так как не является внешним ресурсом . Он просто будет собран G C в любом случае, в будущем. Таким образом, нет: здесь нет проблемы утечки памяти; G C может видеть, что вы делаете.
Итак: в этом случае это не будет иметь функционального значения, но: это хорошая практика, чтобы привыкнуть к этой привычке вызова Dispose()
(обычно через using
), когда это является частью API, поскольку во многих случаях это действительно, очень важно .