Μια συλλογή που αντιπροσωπεύει ένα σύνολο αντικειμένων στα οποία μπορείτε να έχετε πρόσβαση διασχίζοντας κάθε στοιχείο (συγκεκριμένα, μπορείτε να έχετε πρόσβαση χρησιμοποιώντας τον βρόχο foreach) Μια συλλογή περιέχει πολλά στοιχεία, δηλαδή υπάρχει ένα αντικείμενο κλάσης συλλογής και αντικείμενα N στοιχείων
Επειδή οποιαδήποτε κλάση συλλογής υλοποιεί τη διεπαφή IEnumerable, οποιοδήποτε αντικείμενο κλάσης συλλογής έχει μια μέθοδο GetEnumerator(), η οποία μπορεί να επιστρέψει ένα αντικείμενο που υλοποιεί τη διεπαφή IEnumerator, η οποία δεν είναι ούτε αντικείμενο κλάσης συλλογής ούτε αντικείμενο κλάσης στοιχείου συλλογής, είναι ένα ανεξάρτητο αντικείμενο κλάσης. Αυτό το αντικείμενο σάς επιτρέπει να επαναλάβετε κάθε αντικείμενο στοιχείου στο αντικείμενο κλάσης συλλογής
Εάν η κλάση συλλογής είναι μια κλάση συλλογής που ορίζεται από το χρήστη, ο χρήστης πρέπει να εφαρμόσει τη μέθοδο GetEnumerator(), διαφορετικά δεν μπορούν να χρησιμοποιηθούν βρόχοι. Φυσικά, η κλάση IEnumerator που αντιστοιχεί σε αυτήν την προσαρμοσμένη κλάση συλλογής (η κλάση που υλοποιεί τη διεπαφή) πρέπει επίσης να προσαρμοστεί
Για παράδειγμα, ο IEnumerator που αντιστοιχεί στην κλάση συλλογής ArrayList είναι ArrayListEnumeratorSimple Ο IEnumerator που αντιστοιχεί στην κλάση συλλογής Array είναι ο SZArrayEnumerator (Καμία κλάση δεν καλύπτεται από την τεκμηρίωση της βιβλιοθήκης κλάσεων .NET Framework (MSDN))
1. Οι διεπαφές στο System.Colloctions που αντιπροσωπεύουν τη συμπεριφορά της συλλογής είναι: 1) Επιλογή Καθορίστε το μέγεθος, τον αριθμό των απαρίθμησης και τις μεθόδους συγχρονισμού για όλες τις συλλογές. Προέρχεται από το IEnumerable Καθορίζει την πιο βασική συμπεριφορά της κλάσης συλλογής και όλες οι συλλογής υλοποιούν αυτήν τη διεπαφή (βασική διεπαφή) Αλλά η συμπεριφορά του είναι πολύ βασική: είναι κυρίως μια ιδιότητα Count και δεν έχει πολύ νόημα να την εφαρμόσουμε μόνο του
2) IEnumerable Εκθέστε μια απαρίθμηση που υποστηρίζει απλές επαναλήψεις σε ένα σύνολο Έχει μόνο μία μέθοδο, την GetEnumerator(), η οποία επιστρέφει μια διεπαφή IEnumerator μέσω της οποίας μπορεί να διασχίσει τη συλλογή Βασικά όλες οι συλλογής υλοποιούν αυτήν τη διεπαφή
3) IList Η υλοποίηση IList είναι μια συλλογή τιμών που μπορούν να ταξινομηθούν και μπορούν να προσπελαστούν ανά ευρετήριο για τα μέλη της, και η ίδια υλοποιεί τις διεπαφές ICollection και IEnumerable είναι η αφηρημένη βασική κλάση για όλες τις λίστες. Υπάρχουν τρεις κατηγορίες υλοποιήσεων IList: μόνο για ανάγνωση, σταθερού μεγέθους και μεταβλητού μεγέθους.
4) Λεξικό Η υλοποίηση IDictionary είναι μια συλλογή ζευγών κλειδιών/τιμών που υλοποιεί με τη σειρά της τις διεπαφές ICollection και IEnumerable είναι η βασική διεπαφή μιας συλλογής ζευγών κλειδιών/τιμών. Υπάρχουν τρεις κατηγορίες υλοποιήσεων IDictionary: μόνο για ανάγνωση, σταθερού μεγέθους και μεταβλητού μεγέθους. Το IDictionary μπορεί να ονομαστεί λεξικό, χάρτης ή λίστα shash και έχει πρόσβαση σε τιμές που βασίζονται σε κλειδιά (οποιουδήποτε τύπου).
2. Οι συλλογής που μπορούν να χρησιμοποιηθούν απευθείας στο System.Collections είναι: 1) Λίστα συστοιχιών Υλοποίηση διεπαφών: IList, ICollection, IEnumerable Εφόσον η συλλογή δεν έχει τροποποιηθεί, το ArrayList μπορεί να υποστηρίξει με ασφάλεια πολλούς αναγνώστες ταυτόχρονα Καθώς προστίθενται στοιχεία στο ArrayList, η χωρητικότητα αυξάνεται αυτόματα κατ' απαίτηση με ανακατανομή (2x αύξηση) Εάν πρέπει να δημιουργήσετε έναν πίνακα αντικειμένων, αλλά δεν γνωρίζετε εκ των προτέρων το μέγεθος του πίνακα, μπορείτε να χρησιμοποιήσετε το ArrayList Το ArrayList αναφέρεται σε όλα τα στοιχεία ως αντικείμενα, επομένως πρέπει να πληκτρολογηθεί κατά την πρόσβαση σε στοιχεία στο ArrayList Πλεονεκτήματα: Αλλάξτε δυναμικά το μέγεθος, ευέλικτη και βολική εισαγωγή και αφαίρεση στοιχείων, δυνατότητα ταξινόμησης Μειονεκτήματα: Η απόδοση εισαγωγής δεν είναι τόσο καλή όσο οι πίνακες, όχι οι ισχυροί τύποι
2) Συστοιχία bit Υλοποίηση διεπαφών: ICollection και IEnumerable Διαχειριστείτε συμπιεσμένους πίνακες τιμών bit.
3) Με δυνατότητα κατακερματισμού Υλοποίηση διεπαφών: IDictionary, ICollection, IEnumerable Μπορείτε ελεύθερα να προσθέσετε και να αφαιρέσετε στοιχεία στο Hashtable, μερικά όπως το ArrayList, αλλά χωρίς την επιβάρυνση απόδοσης
4) Ταξινομημένη λίστα Υλοποίηση διεπαφών: IDictionary, ICollection, IEnumerable Το SortedLIst συνδυάζει τα πλεονεκτήματα του ArrayList και του Hashtable και μπορεί να ταξινομηθεί κατά τιμή κλειδιού
5) Ουρά Υλοποίηση διεπαφών: ICollection και IEnumerable Τα queques είναι ουρές, πρόσβαση πρώτης εισόδου, πρώτης εξόδου σε μεμονωμένα στοιχεία Μπορείτε να καλέσετε τη μέθοδο GetEnumerator() του αντικειμένου Queque για να κάνετε το αντικείμενο IEnumerator να επαναληφθεί στα στοιχεία της ουράς
6) Στοίβα Υλοποίηση διεπαφών: ICollection και IEnumerable Μια στοίβα είναι μια στοίβα που έχει πρόσβαση σε μεμονωμένα στοιχεία με βάση την τελευταία είσοδο, την πρώτη έξοδο Μπορείτε να καλέσετε τη μέθοδο GetEnumerator() του αντικειμένου Stack για να κάνετε το αντικείμενο IEnumerator να επαναληφθεί στα στοιχεία της στοίβας
3. Οι συλλογής που αναφέρονται παραπάνω είναι όλες γενικές συλλογής και τα περισσότερα από τα στοιχεία που δέχονται είναι τύπου αντικειμένου, όταν το αντικείμενο τοποθετείται Μετά τη συλλογή, οι αρχικές πληροφορίες κειμένου χάνονται - δηλαδή, αυτές οι γενικές συλλογής δεν πληκτρολογούνται έντονα Η λύση είναι να χρησιμοποιήσετε συλλογής με ισχυρούς τύπους Χώρος ονομάτων System.Collections System.Collections.Specialized namespace Ορισμένες μπορούν να ικανοποιήσουν τις απαιτήσεις και μπορούν να χρησιμοποιηθούν απευθείας ή να κληρονομηθούν
|