Ja und nein. Sicher wird der Stream weiter verwendet, das stimmt.
Allerdings (muss wohl durch iPhone-Entwicklung so sein) finde ich es eher unschön, dass sich "Foo" darauf verlässt, dass "Klasse" den Stream selber korrekt wieder freigibt. Denn da hast Du beispielsweise folgendes Problem:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
|
Foo Bar()
{
...
FileStream stream = new FileStream( "dateiname", FileMode.Open, FileAccess.Read ); // CA2000
Klasse x = new Klasse( stream );
Klasse y = new Klasse( stream );
...
}
|
Wer gibt denn da jetzt den Stream frei? Also "Klasse" und die Instanzen "x" und "y" können das offensichtlich weder wissen, noch vernünftig fehlerfrei durchführen. Aber "Bar" kümmert sich auch nicht drum. Design-Fehler.
Die eiserne Regel (und das hat sich 100%ig aus der iPhone-Entwicklung bei mir eingebrannt) lautet da meiner Meinung nach: Der Ersteller gibt ihn auch wieder frei. Jeder andere darf maximal drauf zugreifen, aber disposen auf keinen Fall.