Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 22702|Răspunde: 0

[Sursă] Există mai multe tipuri de rollup-uri pentru colecții în C#

[Copiază linkul]
Postat pe 11.11.2014 08:44:59 | | |
O colecție care reprezintă un set de obiecte ce pot fi accesate parcurgând fiecare element (în special, poate fi accesată folosind bucla foreach)
O colecție conține mai multe elemente, adică există un obiect de clasă de colecție și N obiecte de element

Deoarece orice clasă de colecție implementează interfața IEnumerabil, orice obiect de clasă de colecție are o metodă GetEnumerator(), care poate returna un obiect ce implementează interfața IEnumerator, care nu este nici un obiect de clasă de colecție, nici un obiect de clasă de colecție, ci un obiect de clasă independent. Acest obiect îți permite să iterezi prin fiecare obiect element din obiectul clasei de colecție

Dacă clasa de colecție este definită de utilizator, utilizatorul trebuie să implementeze metoda GetEnumerator(), altfel bucle nu pot fi folosite. Desigur, clasa IEnumerator corespunzătoare acestei clase personalizate de colecție (clasa care implementează interfața) trebuie de asemenea personalizată

De exemplu, IEnumeratorul corespunzător clasei de colecție ArrayList este ArrayListEnumeratorSimple
            IEnumeratorul corespunzător clasei de colecție Array este SZArrayEnumerator
      (Niciuna dintre clase nu este acoperită în documentația .NET Framework Class Library (MSDN))

1. Interfețele din System.Colloctions care reprezintă comportamentul colecției sunt:
1) Alegere
Definește dimensiunea, numărul de enum-uri și metodele de sincronizare pentru toate colecțiile. Derivat din IEnumerable
Definește cel mai de bază comportament al clasei de colecție, iar toate clasele de colecție implementează această interfață (interfață de bază)
Dar comportamentul său este prea de bază: este în principal o proprietate Count și nu are prea mult sens să o implementezi singur

2) IEnumerabil
Expune o enumerare care suportă iterații simple pe o mulțime
Are o singură metodă, GetEnumerator(), care returnează o interfață IEnumerator prin care poate parcurge colecția
Practic, toate clasele de colecție implementează această interfață

3) IList
Implementarea IList este o colecție de valori care pot fi sortate și pot fi accesate prin index pentru membrii săi, iar ea însăși implementează interfețele ICollection și IEnumerable
este clasa abstractă de bază pentru toate listele. Există trei categorii de implementări IList: doar pentru citire, dimensiuni fixe și dimensiuni variabile.

4) IDicționar
Implementarea IDictionary este o colecție de perechi cheie/valoare care implementează la rândul său interfețele ICollection și IEnumerable
este interfața de bază a unei colecții de perechi cheie/valoare. Există trei categorii de implementări IDictionary: doar citire, dimensiune fixă și dimensiune variabilă.
IDictionary poate fi numit dicționar, hartă sau listă shash și accesează valori bazate pe chei (de orice tip).

2. Clasele de colecție care pot fi folosite direct în System. Colecțiile sunt:
1) ArrayList
Interfețe de implementare: IList, ICollection, IEnumerable
Atâta timp cât colecția nu este modificată, ArrayList poate suporta în siguranță mai mulți cititori simultan
Pe măsură ce elementele sunt adăugate la ArrayList, capacitatea este crescută automat la cerere prin realocare (creștere de 2x)
Dacă trebuie să creezi un tablou de obiecte, dar nu știi dimensiunea array-ului dinainte, poți folosi ArrayList
ArrayList se referă la toate elementele ca obiecte, deci trebuie să fie tipat atunci când accesezi elementele din ArrayList
Avantaje: Schimbare dinamică a dimensiunii, inserție și eliminare flexibilă și convenabilă a elementelor, sortabilitate
Dezavantaje: Performanța de inserție nu este la fel de bună ca la array-uri, nu la tipurile puternice

2) BitArray
Implementează interfețe: ICollection și IEnumerable
Gestionează tablouri comprimate de valori de biți.

3) Hashtable
Interfețe de implementare: IDictionary, ICollection, IEnumerable
Poți adăuga și elimina liber elemente în Hashtable, unele precum ArrayList, dar fără overhead de performanță

4) SortedList
Interfețe de implementare: IDictionary, ICollection, IEnumerable
SortedLIst combină avantajele ArrayList și Hashtable și poate fi sortat după valoarea cheie

5) Coadă
Implementează interfețe: ICollection și IEnumerable
Queque-urile sunt cozi, acces primul intrat, primul ieșit la elemente individuale
Poți folosi metoda GetEnumerator() a obiectului Queque pentru ca obiectul IEnumerator să itereze prin elementele din coadă

6) Stack
Implementează interfețe: ICollection și IEnumerable
O stivă este o stivă care accesează elemente individuale pe bază de ultimul intrat, primul ieșit
Poți folosi metoda GetEnumerator() a obiectului Stack pentru ca obiectul IEnumerator să itereze prin elementele din stivă

3. Clasele de colecție menționate mai sus sunt toate clase generale de colecție, iar majoritatea elementelor pe care le acceptă sunt de tipul Obiect, atunci când obiectul este introdus în
După colecție, informațiile originale de tip se pierd – adică aceste clase generale de colecție nu sunt puternic tipizate
Soluția este să folosești clase de colecție puternic tipizate
Spațiul de nume System.Collections
System.Collections.Spațiu de nume specializat Unele clase pot îndeplini cerințele și pot fi folosite direct sau moștenite





Precedent:O scrisoare deschisă către majoritatea penisilor în ajunul Zilei Persoanelor Singure
Următor:Range Rover generic C# (Turn)
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com