Als allgemeine Regel, ja, sollten Sie den Code wie im ersten Beispiel schreiben.
Es gibt einige Klassen, die den Besitz des an sie übergebenen Objekts übernehmen. Wenn Sie also das äußere Objekt ablegen, wird automatisch das innere Objekt für Sie entfernt, aber das ist die Ausnahme von der Regel.
In jedem Fall sollte der Aufruf von Dispose
mehr als einmal sicher sein. Das heißt, Objekte sollten das so implementieren, dass es sicher ist und nur die Arbeit beim ersten Mal erledigt.
Also, als eine allgemeine Regel, gehen Sie mit der ersten Syntax.
Jetzt, für das angegebene Beispiel, sollte es nicht wirklich wichtig sein, wie ein MemoryStream
nicht wirklich an Ressourcen hält, die entsorgt werden müssen, aber es gibt ein Problem mit dieser Erwartung auch. Wenn Sie wissen, dass eine bestimmte Version eines Objekts keine Ressource verwendet, können Sie die Dispose
ignorieren. Wenn dieses Objekt in Zukunft eine solche Ressource erhält, erhalten Sie plötzlich ein Leck.
Es sei denn, Sie sehen eine nachteilige Wirkung mit dem gegebenen Code, wie das Hinzufügen von zu viel Overhead, dann würde ich mich einfach nicht darum kümmern.
Es hängt alles davon ab, wie in diesem Fall XmlReader.Dispose implementiert ist. – Will
Vielen Dank sehr gut ;-) –