Laden...

Muss man StreamReader schliessen?

Erstellt von qwert_a vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.749 Views
qwert_a Themenstarter:in
57 Beiträge seit 2005
vor 17 Jahren
Muss man StreamReader schliessen?

Hi, All
Ich habe gerade den MSDN-Artikel über das Thema StreamReader gelesen.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconWritingTextToFile.asp

Was mich verwirrt ist, dass in erstem Beispiel wird StreamReader geschlossen, in zweitem aber nicht.

Hat jemand eine Erklärung dafür?

Danke,

qwert_a

T
512 Beiträge seit 2006
vor 17 Jahren

Ich gehe mal davon aus, du meinst den C# Code.

Durch das using Statement wird automatisch wenn der using Block verlassen wird die Dispose Funktion aufgerufen (für die Variable, die man im Using deklariert). Die ruft dann das Close auf.

e.f.q.

Aus Falschem folgt Beliebiges

2.082 Beiträge seit 2005
vor 17 Jahren

Hallo qwert_a,

egal ob Dispose automatisch Close macht oder nicht, ich rufe Close trotzdem noch auf. Weiß nicht ob das was bringt aber sicher ist sicher 😁

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

P
123 Beiträge seit 2006
vor 17 Jahren

Wichtig ist dort, das verwendete Objekt die IDisposable Methode implementiert haben muss!

Gruss plongo


Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de

qwert_a Themenstarter:in
57 Beiträge seit 2005
vor 17 Jahren

thanks 2 all 🙂

Jetzt hab ich es!

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Traumzauberbaum,

Durch das using Statement wird automatisch wenn der using Block verlassen wird die Dispose Funktion aufgerufen (für die Variable, die man im Using deklariert). Die ruft dann das Close auf.

Es ist genau anderes herum. Close ruft Dispose auf.

Allerdings direkt das Dispose mit einem bool-Parameter, das auch von dem parameterlosen Dispose aufgerufen wird.


public override void Close()
{
      this.Dispose(true);
}

public void Dispose()
{
      this.Dispose(true);
}

Hallo frisch,

egal ob Dispose automatisch Close macht oder nicht, ich rufe Close trotzdem noch auf. Weiß nicht ob das was bringt aber sicher ist sicher

Nee, musst du wirklich nicht. Das using ist ja extra dafür das, dass das Schließen/Zerstören des Objekts geregelt erfolgt. Das es eine zweite Methode zum Zerstören mit Namen Close gibt, liegt einfach am etablierten Sprachgebrauch. Eine Klasse sollte Close im Effekt nie anders implementieren als Dispose.

herbivore