Προγραμματισμός

Πώς να εργαστείτε με ευρετήρια στο C #

Η γλώσσα προγραμματισμού C # περιλαμβάνει υποστήριξη για ευρετήρια - μια δυνατότητα που σας επιτρέπει να χρησιμοποιείτε ένα αντικείμενο ακριβώς ως πίνακα. Οι ευρετηριαστές είναι επίσης γνωστοί ως έξυπνοι πίνακες και μπορούν να οριστούν παρόμοιοι με τον τρόπο που ορίζεται μια ιδιότητα. Το MSDN δηλώνει: "Οι ευρετηριαστές επιτρέπουν την εμφάνιση ευρετηρίων παρουσιών μιας κλάσης ή δομής όπως οι συστοιχίες. Οι ευρετηριαστές μοιάζουν με ιδιότητες εκτός από το ότι οι βοηθοί τους λαμβάνουν παραμέτρους."

Αν και οι δείκτες και οι ιδιότητες έχουν ομοιότητες με περισσότερους από έναν τρόπους, υπάρχουν λεπτές διαφορές μεταξύ τους. Σε αντίθεση με τις ιδιότητες, μπορείτε να αποκτήσετε πρόσβαση σε ένα ευρετήριο χρησιμοποιώντας ευρετήρια. Να θυμάστε ότι πρέπει να αποκτήσετε πρόσβαση σε μια ιδιοκτησία χρησιμοποιώντας το όνομά της. Επίσης, οι δείκτες είναι μέλη της τάξης και επομένως δεν μπορούν να είναι στατικοί. Μπορείτε να έχετε τόσο στατικές όσο και μη στατικές ιδιότητες.

Το ακόλουθο απόσπασμα κώδικα απεικονίζει τον τρόπο δηλώσεως ενός ευρετηρίου:

αυτή [λίστα επιχειρημάτων]

{

παίρνω

  {

  }

Σειρά

  {

  }

}

Σημειώστε ότι ο τροποποιητής όπως φαίνεται στη δήλωση σύνταξης ενός ευρετηρίου μπορεί να είναι ιδιωτικός, δημόσιος, προστατευμένος ή εσωτερικός.

Εξετάστε την ακόλουθη τάξη:

δημόσια τάξη Επικοινωνία

    {

ιδιωτική συμβολοσειρά [] διεύθυνση = νέα συμβολοσειρά [3];

δημόσια συμβολοσειρά αυτό [int index]

        {

παίρνω

            {

διεύθυνση επιστροφής [ευρετήριο];

            }

σειρά

            {

διεύθυνση [index] = τιμή;

            }

        }

    }

Η κλάση επαφών περιέχει ένα ιδιωτικό μέλος που ονομάζεται διεύθυνση και καθορίζει έναν ευρετήριο. Το μέλος διεύθυνσης είναι ένας πίνακας συμβολοσειράς τύπου. Δείτε πώς μπορείτε να δημιουργήσετε μια παρουσία της κλάσης επαφών και να χρησιμοποιήσετε το ευρετήριο.

Επαφή επαφής = νέα επαφή ();

επικοινωνία [0] = "Begumpet";

επικοινωνία [1] = "Χαϊντεραμπάντ";

επικοινωνία [2] = "Telengana";

για (int i = 0; i <3; i ++)

Console.WriteLine (επικοινωνία [i]);

Θα πρέπει να σημειωθεί ότι πρέπει να χρησιμοποιήσετε τη λέξη-κλειδί "αυτό" για να ορίσετε ευρετήρια. Λάβετε υπόψη ότι δεν περιορίζεστε να χρησιμοποιείτε μόνο ακέραιους αριθμούς ως ευρετήρια για πρόσβαση σε ευρετήρια - μπορείτε ακόμη και να χρησιμοποιήσετε άλλους μηχανισμούς αναζήτησης. Ένα ευρετήριο χρησιμοποιείται συνήθως όταν η τάξη σας αντιπροσωπεύει μια συλλογή ή αντικείμενα. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το ευρετήριο για πρόσβαση σε ένα συγκεκριμένο στοιχείο χρησιμοποιώντας το ευρετήριο.

Ας δοκιμάσουμε ένα παράδειγμα. Εξετάστε την ακόλουθη τάξη που ονομάζεται Πελάτης.

πελάτης δημόσιας τάξης

    {

δημόσιες παραγγελίες λίστας

        {

παίρνω; σειρά;

        }

δημόσια παραγγελία αυτό [int orderID]

        {

παίρνω

            {

επιστροφή (από o στις παραγγελίες

όπου o.OrderID == παραγγελία

επιλέξτε o). Πρώτα ();

            }

        }

    }

Η κλάση πελατών ορίζει έναν δείκτη τύπου παραγγελίας. Περιέχει επίσης μια δημόσια ιδιότητα που είναι μια λίστα με τον τύπο παραγγελίας. Αυτή είναι η τάξη παραγγελίας για αναφορά σας.

δημόσια τάξη τάξη

    {

δημόσια int OrderID

        {

παίρνω; σειρά;

        }

    }

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να αποκτήσετε πρόσβαση στο ευρετήριο της κλάσης πελατών για να ανακτήσετε μια συγκεκριμένη παραγγελία.

   Λίστα lstOrder = νέα λίστα ();

Παραγγελία o1 = νέα παραγγελία ();

o1.OrderID = 1;

Παραγγελία o2 = νέα παραγγελία ();

o2.OrderID = 2;

lstOrder.Προσθήκη (o1);

lstOrder.Προσθήκη (o2);

Πελάτης πελάτη = νέος πελάτης ();

customer.Orders = lstOrder;

Παραγγελία o = πελάτης [1];

Ανατρέξτε στο παραπάνω απόσπασμα κώδικα. Σημειώστε πώς δημιουργήθηκε μια γενική λίστα τύπου Παραγγελίας και εκχωρήθηκε στην ιδιότητα Παραγγελίες μιας παρουσίας της κλάσης Πελάτη. Στη συνέχεια, απλώς μεταβιβάζετε το OrderId ως παράμετρο για την ανάκτηση της συγκεκριμένης παρουσίας παραγγελίας.

Οι δείκτες υποστηρίζουν την κληρονομιά, μπορούν να είναι πολυμορφικοί και μπορούν επίσης να είναι αφηρημένοι. Εξετάστε την ακόλουθη κλάση που ορίζει ένα ευρετήριο που είναι εικονικό. Η τάξη ContactBase είναι τροποποιημένη έκδοση της κλάσης επαφών που συζητήσαμε νωρίτερα σε αυτό το άρθρο.

δημόσια τάξη ContactBase

    {

προστατευμένη συμβολοσειρά [] διεύθυνση = νέα συμβολοσειρά [3];

δημόσια εικονική συμβολοσειρά αυτό [int index]

        {

παίρνω

            {

διεύθυνση επιστροφής [ευρετήριο];

            }

σειρά

            {

διεύθυνση [index] = τιμή;

            }

        }

    }

Τώρα μπορείτε να αντλήσετε μια κλάση από την κατηγορία ContactBase και να παρακάμψετε το ευρετήριο όπως φαίνεται παρακάτω.

δημόσια τάξη ConcreteContact: ContactBase

    {

δημόσια παράκαμψη συμβολοσειράς αυτό [int index]

        {

παίρνω

            {

διεύθυνση επιστροφής [ευρετήριο];

            }

σειρά

            {

διεύθυνση [index] = τιμή;

            }

        }

    }

Έτσι, στο παραπάνω παράδειγμα κώδικα, διερευνήσαμε πώς μπορούν να χρησιμοποιηθούν οι δείκτες ενώ κληρονομούν τύπους και πώς μπορούν να δείξουν πολυμορφική συμπεριφορά.

Μπορείτε επίσης να ορίσετε ένα ευρετήριο ως αφηρημένο. Για να το κάνετε αυτό, πρέπει να δημιουργήσετε μια αφηρημένη κλάση και, στη συνέχεια, να ορίσετε έναν ευρετήριο ως αφηρημένο σε αυτό. Ας τροποποιήσουμε την κλάση ContactBase και ορίστε το ευρετήριο ως αφηρημένο. Δείτε πώς φαίνεται η τροποποιημένη έκδοση της κατηγορίας ContactBase:

 δημόσια αφηρημένη τάξη ContactBase

    {

προστατευμένη συμβολοσειρά [] διεύθυνση = νέα συμβολοσειρά [3];

δημόσια αφηρημένη συμβολοσειρά αυτό [int index]

        {

παίρνω; σειρά;

        }

}

Δεν χρειάζεται να αλλάξετε την κατηγορία ConcreteContact ούτως ή άλλως. Τώρα μπορείτε να χρησιμοποιήσετε το ευρετήριο για να αντιστοιχίσετε τιμές συμβολοσειράς σε μια παρουσία της κλάσης ConcreteContact όπως φαίνεται παρακάτω.

ConcreteContact contact = νέο ConcreteContact ();

επικοινωνία [0] = "Begumpet";

επικοινωνία [1] = "Χαϊντεραμπάντ";

επικοινωνία [2] = "Telengana";