Wenn Sie Close
auf einem aktiven StreamWriter
aufrufen, ist es unmöglich, weiteren Code in den Stream zu schreiben (da er geschlossen wurde). Um einen anderen Stream zu öffnen, müssen Sie eine neue Instanz von StreamWriter
anlegen, da es keine 'Open'-Methode gibt.Was ist der Sinn von Streamwritern mit Close() und Dispose()?
Meine Frage ist, was ist der Punkt in Close
und Dispose
, wenn Sie wirklich nichts außer Dispose
nach dem Schließen des Streams verwenden können?
Ich könnte verstehen, wenn es eine Open
Funktion, d. H. Sie könnten eine Datei schließen und dann öffnen Sie eine andere mit der gleichen StreamWriter
. Aber da es nur Close
gibt und Sie danach nichts wirklich außer Dispose
verwenden können, warum nicht einfach Close
loswerden und Dispose
den zugrunde liegenden Stream als seine erste Aktion schließen?
Ich bekomme, dass Dispose
kommt von IDisposeable
und all das. Was ich wissen will, ist, warum Close
speziell dann benötigt wird, wenn Dispose
scheint Close
auf jeden Fall aufrufen.
Soweit ich sehen kann, ohne die Möglichkeit, einen anderen Strom mit der gleichen StreamWriter
zu öffnen, gibt es keinen Punkt Close
in mit, wenn Sie keine andere Wahl, als zu Dispose
danach, da alle anderen Methoden unbrauchbar werden.
Warum ist, dass StreamWriter
bothers Close
hat, wenn sie Close
und Dispose
in ein einziges Verfahren zusammenführen könnten?
Es sieht aus wie Sie es nach hinten haben - 'Close' ruft' Dispose', nicht umgekehrt. –
'Close' ruft' Dispose' auf, wodurch die zugrunde liegende Stream-Ressource geschlossen wird. –