Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 22702|Απάντηση: 0

[Πηγή] Υπάρχουν διάφοροι τύποι συνάθροισης για συλλογές σε C#

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 11/11/2014 8:44:59 π.μ. | | |
Μια συλλογή που αντιπροσωπεύει ένα σύνολο αντικειμένων στα οποία μπορείτε να έχετε πρόσβαση διασχίζοντας κάθε στοιχείο (συγκεκριμένα, μπορείτε να έχετε πρόσβαση χρησιμοποιώντας τον βρόχο 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 Ορισμένες μπορούν να ικανοποιήσουν τις απαιτήσεις και μπορούν να χρησιμοποιηθούν απευθείας ή να κληρονομηθούν





Προηγούμενος:Μια ανοιχτή επιστολή προς την πλειοψηφία των την παραμονή της Ημέρας των Εργένηδων
Επόμενος:C# Generic Range Rover (Στροφή)
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com