Müssen wir schließen, C# oder BinaryWriter BinaryReader in einen using-block verwenden?
Mit diesem code:
using (BinaryWriter writer = new BinaryWriter(File.Open(ProjectPath, FileMode.Create)))
{
//save something here
}
Brauchen wir, um in der Nähe der BinaryWriter? Wenn nicht, warum?
- Trotz der Tatsache, dass es eine andere Art, dies ist ein Duplikat von stackoverflow.com/questions/1070667/.... Ich würd Abstimmung zu schließen, aber erreicht haben mein limit für den Tag. Ich schlage vor, dass wir nicht brauchen, ein "soll ich entsorgen, eine Klasse, die IDisposable implementiert" - Frage für jede Klasse, die es implementiert. Erwägen Sie bitte, die Abstimmung zu schließen, da ein duplizieren von Ihre Lieblings IDisposable Frage.
- Die wirklich erhalten Sie denken, dass dies eine Dokumentation/API-design-Fehler: der compiler sollten warnen, wenn Sie offensichtliche Fehler, und die Dokumentation sollte klar beschriften Sie die Close () - Aufrufe sind äquivalent zu Entsorgen (und vorzugsweise keine solchen Close () - Aufrufe, die sind voll redundant in den ersten Platz).
Du musst angemeldet sein, um einen Kommentar abzugeben.
So lange, wie es ist, die alle eingewickelt in einem
using
block, dann brauchen Sie nicht explizit zu nennenClose
.Den
using
- block wird sichergestellt, dass das Objekt freigegeben, und dieClose
undDispose
Methoden sind austauschbar aufBinaryWriter
. (DieClose
Methode ruft einfach nurDispose
hinter den kulissen.)Setzen Sie in einer Anweisung verwenden, wie pro Ihre code-Beispiel wird der Aufruf von Dispose, das schließt die zugrunde liegenden stream, so. - Nr. Sie können dies durch Reflektor:
Mit dem code, den Sie dort haben, es wird schließen Sie die Datei, sobald es beendet den block, so dass Sie nicht brauchen, um in der Nähe nennen explcitly.
Der einzige Grund, nicht zu verwenden Sie die using-Anweisung, wenn Sie möchten, dass die Datei immer noch geöffnet, nachdem Sie fertig sind mit Ihrem BinaryWriter, in diesem Fall sollten Sie halten, um einen Verweis, anstatt übergeben es in den Konstruktor so.
Den using-block automatisches schließen der binären Schriftsteller und steckte es in einen Zustand zu GC ' ed. Mit Blöcken sind syntaktische Zucker für die Ausnahmebehandlung und schließen des Streams selbst.
Durch das einwickeln der Schriftsteller in einem using-block, der in der Nähe wird automatisch passieren, wenn der Schriftsteller ist entsorgt. Also in diesem Fall, brauchen Sie nicht explizit zu schließen, der Schriftsteller.