Entwickler-Ecke
C# - Die Sprache - Wann genau macht eine Using Funktion wirklich Sinn?
Felix2000 - Fr 27.05.11 11:14
Titel: Wann genau macht eine Using Funktion wirklich Sinn?
Hallo !
Ich bin wie gesagt neu im Bereich C Sharp und würde gerne wissen, wann genau eine Using Funktion wirklich Sinn ergibt. Ich habe diese in einem Programm gefunden, dass wie gesagt nicht von mir selbst geschrieben wurde. Hier der C Sharp Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| using (StreamWriter writer = new StreamWriter(currentPath_Readed_Values_ISD_Q + "ISD_Q.txt")) {
string strCurrentValue = String.Empty; foreach (ISfact isfact in parsedin.mySEArray) { if (isfact != null) { strCurrentValue = isfact.Institution.ToString().Trim() + "|"; writer.WriteLine(strCurrentValue); }
} } |
Danke für die Hilfe !
Grüße
Felix
Ralf Jansen - Fr 27.05.11 11:26
Immer dann wenn es Resourcen gibt (insbesondere unmanaged Systemressourcen) die deterministisch (also vom Entwickler steuerbar zu einem bestimmten Zeitpunkt im Code) freigegeben werden müssen. Dazu gibt es die Dispose Methode solcher Klassen die man aufrufen kann. Der using Block soll sicherstellen das das auch garantiert erfolgt. Man könnte die aber auch selber aufrufen und denn garantierten Aufruf durch einen try..finally Block sicherstelen. In deinem Beispiel ist der sing Block zum Beispiel sehr wichtig. Der Streamwriter hält eine File das gezielt auch wieder freigegeben werden sollte. Ansonsten könntest du nicht vorhersagen wann im folgenden dieses File wieder frei verfügbar wäre und folgende Zugriffe auf die Datei wieder gefahrlos möglich sind.
Die
Hilfe [
http://msdn.microsoft.com/de-de/library/yh598w02%28v=vs.80%29.aspx] zu diesem Thema ist übrigens in diesem Fall auch hilfreich ;)
Christian S. - Fr 27.05.11 11:27
Kurz gesagt: Using macht immer dann Sinn, wenn Du eine Isntanz einer Klasse benutzt, welche das IDisposable-Interface implementiert, bei der also direkt nach der Verwendung (und nicht irgendwann) nach Resourcen freigegeben werden müssen.
In Deinem Fall will man z.B., dass die Datei, in die geschrieben wird, direkt nach dem Schreiben freigegeben wird (und auch sämtliche Puffer da rein geschrieben werden).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!