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

 

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

Χειρισμός instance class

Îåêßíçóå áðü ôï ìÝëïò hercules. Τελευταία δημοσίευση από το μέλος sakalis στις 31-12-2008, 14:06. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  29-12-2008, 03:59 47246

    Χειρισμός instance class

    Γειά σας.
    Είμαι ένας νέος χομπίστας προγραμματιστής σε C#. Θα ήθελα να ρωτήσω κάτι.
    Για να μπορώ να χρησιμοποιώ τα μέλη ενός instance μιας κλάσης σε διαφορετικό σημείο από εκεί που δημιουργήθηκε το instance,
    είναι σωστή πρακτική να δηλώνω μια public μεταβλητή του τύπου της κλάσης ή υπάρχει κανένας πιο απλός και σωστός τρόπος;

    Παρακάτω παραθέτω ένα παράδειγμα.

    public class cTest
    {
    public cTest()
    {
    TestInstance = this;
    }
    public cTest TestInstance;
    public bool Var1;
    public bool Var2;
    public bool Var3;
    }

    Τώρα όταν δημιουργώ ένα instance της κλάσης απο μια φόρμα και ενημερώνω τα μέλη του, θέλω να χρησιμοποιώ το ιδιο instance σε μια άλλη φόρμα.
    Θα μπορούσα υποθέτω να περνάω σαν παράμετρο το instance από φόρμα σε φόρμα ή ακόμα και να κάνω τα μέλη static για να τα δουλεύω σε class level, αλλά ρωτάω για το ποιος είναι ο ενδεδειγμένος τρόπος.
    Είναι το πρώτο μου μήνυμα οπότε ίσως έχω λάθη και ασάφειες.
    Σας ευχαριστώ εκ των προτέρων.
  •  29-12-2008, 08:22 47248 σε απάντηση της 47246

    Απ: Χειρισμός instance class

    Όταν κάνεις static τα μέλη, τότε έχεις ένα instance στο οποίο αναφέρονται όλοι και όταν ένας αλλάξει την τιμή ενός μέλους, τότε όλοι βλέπουν τη νέα τιμή. Όταν δουλεύεις με instances, τότε για κάθε instance κρατάς διαφορετικό set τιμών για τα μέλη, οπότε το να βλέπουν όλοι την ίδια τιμή γίνεται δική σου ευθύνη, δηλαδή θα πρέπει να κάνεις πάσα το object αν αυτό απαιτείται ή να το ανεβάσεις σε scope που να το βλέπουν όλοι. Γενικά, έχε στο νου σου τον απλό κανόνα ότι όσο ανεβαίνεις scope και χρησιμοποιείς objects στα οποία έχουν πρόσβαση όλοι (πχ class level, application level, κλπ), τόσο αυξάνει η πολυπλοκότητα του κώδικα καθώς γίνεται δυσκολότερο το testing, μιας και δεν είσαι απόλυτα σίγουρος ότι το state που έχει το object που σε ενδιαφέρει, επηρεάζεται αποκλειστικά από το σημείο που δουλεύεις/ελέγχεις. Το να περνάς ως παράμετρο το instance από φόρμα σε φόρμα είναι μία καλή και απλή τεχνική. Γενικά πάντως τίποτα δεν αποτελεί τυφλοσούρτη. Θα πρέπει να αξιολογείς την κάθε λύση με κύριο γνώμονα την απλότητα και τη συντηρησιμότητα του κώδικα.


    Vir prudens non contra ventum mingit
  •  29-12-2008, 15:24 47260 σε απάντηση της 47248

    Απ: Χειρισμός instance class

    Σε ευχαριστώ για την απάντηση.
    Νομίζω ότι θα ακολουθήσω την λύση του να περνάω το instance της κλάσης ως παράμετρο από φόρμα σε φόρμα. Έτσι όπως σωστά λες και εσύ θα είναι πιο "σίγουρη" η κατάσταση στην οποία θα βρίσκεται το instance.
    Σε ευχαριστώ και πάλι και ΚΑΛΗ ΧΡΟΝΙΑ!!!
  •  31-12-2008, 14:06 47326 σε απάντηση της 47260

    Απ: Χειρισμός instance class

    Καλύτερα να χρησιμοποιείς properties και methods για τη και όχι public variables. για παραδειγμα ειναι προτιμοτερο να εχεις mia "public MyClass GetInstanceMethod()" method και όχι το παράδειγμα που ανάφερες

    Γιώργος Σακαλής
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems