none
Was genau ist dieses using?

    Frage

  • Hallo,

    Was ist genau dieses using block im Bild?

    Wird es nur für Datenbanke und so benutzt oder kann es für alles mögliche benutzt werden?

    Ps: Ich glaube dass es nicht für Datenbanke und so benutzt werden denn diese class stamt ja auch nicht von Entity framework

    Samstag, 28. Februar 2015 08:09

Antworten

  • Hallo Schuayb,

    ixh glaube du wurdest bereits mehrfach darüber informiert, auch mal selber zu schauen was das using ist.

    Siehe hier auch das MSDN.

    using zeigt an, das das Element in den Klammern () nur im Bereich der  { }-Klammern gilt, und danach in jedem Falle, auch wen ein Fehler eingetretten ist, freigegeben wir, wenn es IDisposable.Dispose()-implementiert.

    Beispielweise ist der folgende Code fast mit dem unteren Vergleichbar:

    using(Stream s = new MemoryStream()) {
        //Bl bla bla
    }
    
    
    
    ///Andere Möglichkeit
    
    Stream str = new MemoryStream;
    
    try {
        //Mach was - bla bla bla
    } catch(Exception ex) {
         //Abfangen eines Fehlers
    } finally { 
       str.Dispose();
    }
    


    © 2015 Thomas Roskop

    Germany // Deutschland

    Samstag, 28. Februar 2015 09:32

Alle Antworten

  • Hallo Schuayb,

    ixh glaube du wurdest bereits mehrfach darüber informiert, auch mal selber zu schauen was das using ist.

    Siehe hier auch das MSDN.

    using zeigt an, das das Element in den Klammern () nur im Bereich der  { }-Klammern gilt, und danach in jedem Falle, auch wen ein Fehler eingetretten ist, freigegeben wir, wenn es IDisposable.Dispose()-implementiert.

    Beispielweise ist der folgende Code fast mit dem unteren Vergleichbar:

    using(Stream s = new MemoryStream()) {
        //Bl bla bla
    }
    
    
    
    ///Andere Möglichkeit
    
    Stream str = new MemoryStream;
    
    try {
        //Mach was - bla bla bla
    } catch(Exception ex) {
         //Abfangen eines Fehlers
    } finally { 
       str.Dispose();
    }
    


    © 2015 Thomas Roskop

    Germany // Deutschland

    Samstag, 28. Februar 2015 09:32
  • Hi,
    das Schlüsselwort "using" steht zu Beginn eines Scopes (Bereiches), in welchem eine Referenz auf ein Objekt benutzt wird (Klammer hinter using). Beim Verlassen des Scopes (schließende geschweifte Klammer) wird ein Dispose (Vorbereitung der Entsorgung des Objektes) in jedem Fall aufgerufen. Das bedeutet konkret, dass der Typ des Objektes (=Klasse) das IDisposeable-Interface implementieren muss und auch bei Verlassen des Scopes nicht über das Ende des Scopes (z.B. return, Fehler oder goto) das implementierte Dispose immer ausgeführt wird. Bei Objekten, die das IDisposeable-Interface nicht implementieren, ist using nicht zulässig und wird vom Compiler als Fehler ausgewiesen.

    Mit dem using kann man sich die Programmierung total vereinfachen, da der oft wichtige Teil der Beendigung des Lebenszyklus eines Objektes nicht in unzähligen Bedingungen (return, Fehler, goto) zu implementieren ist. Das kann z.B. das Schließen von Verbindungen, das Freigeben externer Resoourcen und v.a.m. sein.

    Wichtig zusätzlich ist zu berücksichtigen, dass wie bei jedem Scope innerhalb eines Scopes einer deklarierten Variablen bereits lange vor dem Scope zu Beginn des Member Speicherplatz zugewiesen wird, der Compiler die Gültigkeit aber nur innerhalb des Scopes zulässt.

    --
    Peter

    Samstag, 28. Februar 2015 10:45