Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Using

Îåêßíçóå áðü ôï ìÝëïò dimos.homatas. Τελευταία δημοσίευση από το μέλος odyodyodys στις 05-03-2011, 23:00. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  01-02-2011, 15:49 62890

    Using

    Να κάνω μια ερώτηση ημι-φιλολογικής φύσεως...
    ...Γιατί το using έχει scope; 
    using (TextReader tr = new StreamReader("result.html"))
    {
        string readmaildata = tr.ReadToEnd();
        tr.Close();
    }

    Ποιος ο λόγος να μην  μπορώ να χρησιμοποιήσω το string μου στην υπόλοιπη ρουτίνα; Από ότι καταλαβαίνω το using απλώς κάνει dispose το εκάστοτε αντικείμενο που ορίζει. Γιατί έχει scope στις μεταβλητές;

    Θα μου πεις, βάλε το string πάνω από το using κλπ, οκ, αλλά είπα, είναι ημι-φιλολογική ερώτηση Big Smile



    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
  •  01-02-2011, 16:12 62891 σε απάντηση της 62890

    Απ: Using

    Το ότι υπάρχουν οι αγκύλες { } σημαίνει καταρχήν ότι υπάρχει scope. Το using από πίσω μεταφράζεται σε ένα try ... finally το οποίο περιέχει τον κώδικα που εσύ βάζεις μέσα στις αγκύλες - άρα υπάρχει scope. 

    Εξάλλου, το ότι υπάρχει scope είναι A Good Thing καθώς περιορίζει το scope των μεταβλητών εκεί που χρησιμοποιούνται και δεν ξεφεύγουν παραέξω. Όσο μεγαλύτερο το scope μίας μεταβλητής  τόσο πιθανότερο να χρησιμοποιηθεί κατά λάθος εκεί που δεν χρειάζεται, ειδικά αν πρόκειται για temp variables των οποίων τα ονόματα συχνά ξαναχρησιμοποιούμε λόγω τεμπελιάς.

    Και όσον αφορά το παράδειγμα σου, θα ήταν καλύτερο να έφτιαχνες ένα ξεχωριστό function, π.χ. GetFileContents(string filePath) η οποία θα επέστρεφε τα περιεχόμενα του αρχείου, περιορίζοντας έτσι ακόμη περισσότερο την πιθανότητα παρενεργειών.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  01-02-2011, 17:14 62893 σε απάντηση της 62891

    Απ: Using

    Crystal clear, ευχαριστώ!
    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
  •  05-03-2011, 23:00 63972 σε απάντηση της 62890

    Απ: Using

    Έχω χρησιμοποιήσει το using σε εφαρμογές που χρησιμοποιούν GDI.
    Είναι περισσότερο για να πεις πότε θα πεθάνει κάτι, αντί να περιμένεις πότε θα το μαζέψει ο GC.
    Στο GDI συγκεκριμένα, επειδή απαιτείται πολύ μνήμη (γραφικά) είναι απαραίτητο για να πεις πότε να το καθαρίσει.
    Διαφορετικά, μια μικρή εφαρμογή επεξεργασίας εικόνας μπορεί να μαζέψει άνετα 500Mb μνήμη.. Πράγμα που δεν το θέλουμε!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems