Autor Beitrag
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mi 20.04.16 15:31 
Hallo,

Welche Vorteile hat es bzw wann ist es sogar nötig, eine using-Anweisung zu verwenden, und wann nicht?

Gruß
Neuling
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 20.04.16 16:15 
Hallo,

die using-Klausel benutzt Du immer, wenn Du mit Objekten arbeitest, die Ressourcen belegen, die nicht automatisch (also vom Garbage Collector) freigegebn werden. Klassisch ist das z.B. ein FileStream. Wenn man den öffnet, muss man auch sicher sein, dass er in jedem Fall wieder geschlossen wird. Die using-Klausel garantiert das, weil sie auch im Falle einer zwischendrin geworfenen Exception die Dispose-Methode des Objektes aufruft.

Die using-Klausel kann man in eine try-finally-Anweisung übersetzen. So ist
ausblenden C#-Quelltext
1:
2:
3:
using(var fs = File.Create("foo.txt")) {

}

dasselbe wie
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
var fs = File.Create("foo.txt");
try {
...
finally {
  if (fs != null)
    ((IDisposable)fs).Dispose();
}


Daran sieht man auch schon, dass die using-Klausel nur mit Klassen arbeitet, die IDisposable implementieren. Das sind aber auch genau die, bei denen man sowas sehr dringend machen sollte ;-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: erfahrener Neuling