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

 

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

Λίστα Δεικτών C#

Îåêßíçóå áðü ôï ìÝëïò Alexander. Τελευταία δημοσίευση από το μέλος Alexander στις 23-11-2007, 10:35. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  22-11-2007, 16:22 37649

    Λίστα Δεικτών C#

    Καλησπέρα,

    Θέλω σε μια κλάση να κρατάω δείκτες σε κάποια αντικείμενα. Πώς μπορώ να το κάνω αυτό;

    Ευχαριστώ
  •  22-11-2007, 16:27 37650 σε απάντηση της 37649

    Απ: Λίστα Δεικτών C#

    Κάτι μου λέει ότι είσαι φοιτητής! Wink ... τι εννοείς δείκτες; pointers;

    Είσαι σίγουρος ότι θέλεις να κρατάς pointers και όχι references; Αν ναι, δες εδώ... http://www.codeproject.com/csharp/csunsafeintro01.asp

    Αν όχι... πες μας τι θέλεις ακριβώς να κάνεις μήπως και γίνεται με κάπως πιο ασφαλή και ".net" τρόπο.


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  22-11-2007, 16:48 37653 σε απάντηση της 37650

    Απ: Λίστα Δεικτών C#

    Ακριβώς...  τώρα τη διαβάζω τη γλώσσα.

    Έχω 2 κλάσεις, και θέλω  στη μία να κρατάω μια λίστα με "δείκτες" (ή references) που να δείχνουν σε αντικείμενα της άλλης. Ας πούμε δηλαδή ότι έχω τις κλάσεις κλάση1 και κλάση2. Για να φτιαχτεί ένα αντικείμενο της κλάση2  πρέπει να του περάσω ορίσματα 2 αντικείμενα της κλαση1. Αυτό που θέλω λοιπόν είναι, όταν κατασκευάζεται ένα στιγμυότυπο της κλάση2 να "ενημερώνει" τα αντοίστοιχα της κλάση1, να τους "περνάει" δηλ το this.
    Κάπως έτσι:

    class1{
        ...
        public class2 **list;
        ...
    }

    class2{
        ...
        class2(ref class1 c1, ref class2 c2){ //Να περνάω ref class1 σαν όρισμα γίνεται έτσι;
           c1.list.Add(this);
            ...
        }
    }

    Αν τα λέω μπερδεμένα, πες μου!
  •  22-11-2007, 23:39 37664 σε απάντηση της 37653

    Απ: Λίστα Δεικτών C#

    Στο .NET, όπως και στη Java, δεν υπάρχουν δείκτες, γι αυτό και δεν υπάρχουν και pointer ή reference operators.. Όλες οι αναφορές σε αντικείμενα είναι references. Όταν δημιουργείς μία λίστα, π.χ. List<Customer> η λίστα περιέχει πάντα references στα αντικείμενα. Επίσης, όταν περνάς μία παράμετρο περνάς πάντα reference στο αντικείμενο. Το keyword ref σε μία παράμετρο δεν σημαίνει ότι περνάς reference σε ένα αντικείμενο, αλλά ότι η παράμετρος χρησιμοποιείται τόσο ως input όσο και ως output παράμετρος. Μπορεί μέσα στη συνάρτηση σου να της αλλάξεις τιμή ώστε να αναφέρεται σε άλλο αντικείμενο.

    Τα πράγματα διαφέρουν αν χρησιμοποιείς structs ή κάποιον από τους βασικούς τύπους, π.χ. int, decimal. Αυτές οι τιμές μεταφέρονται πάντα by value.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  23-11-2007, 10:35 37679 σε απάντηση της 37664

    Απ: Λίστα Δεικτών C#

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