Zbirka, ki predstavlja nabor objektov, do katerih je mogoče dostopati s prečkanjem vsakega elementa (zlasti z uporabo foreach loop) Zbirka vsebuje več elementov, tj. obstaja objekt razreda zbirke in N objektov elementov
Ker vsak razred zbirke implementira vmesnik IEnumerable, ima vsak objekt razreda zbirke metodo GetEnumerator(), ki lahko vrne objekt, ki implementira vmesnik IEnumerator, ki ni niti objekt razreda zbirke niti objekt razreda elementov zbirke, temveč je neodvisen objekt razreda. Ta objekt vam omogoča iteracijo skozi vsak element objekt v objektu razreda zbirke
Če je razred zbirke uporabniško definiran razred zbirke, mora uporabnik implementirati svojo metodo GetEnumerator(), sicer zank ni mogoče uporabiti. Seveda je treba tudi razred IEnumerator, ki ustreza temu razredu prilagojene zbirke (razred, ki implementira vmesnik), prilagoditi
Na primer, IEnumerator, ki ustreza razredu zbirke ArrayList, je ArrayListEnumeratorSimple IEnumerator, ki ustreza razredu zbirke Array, je SZArrayEnumerator (Noben od teh razredov ni zajet v dokumentaciji .NET Framework Class Library (MSDN))
1. Vmesniki v System.Colloctions, ki predstavljajo obnašanje zbirke, so: 1) ICollekcija Določite velikost, število enumov in metode sinhronizacije za vse zbirke. Izpeljano iz IEnumerable Določa najbolj osnovno vedenje razreda zbirke, vsi razredi zbirk pa implementirajo ta vmesnik (osnovni vmesnik) A njegovo vedenje je preveč osnovno: gre predvsem za lastnost Counta in nima veliko smisla, da bi ga implementirali samo
2) IEnumerable Razkrijte enumeracijo, ki podpira preproste iteracije na množici Ima le eno metodo, GetEnumerator(), ki vrne vmesnik IEnumeratorja, preko katerega lahko prehaja skozi zbirko Praktično vsi razredi zbirk implementirajo ta vmesnik
3) IList Implementacija IList je zbirka vrednosti, ki jih je mogoče razvrstiti in do katerih je mogoče dostopati z indeksom za njihove člane, sama pa izvaja vmesnike ICollection in IEnumerable je abstraktni osnovni razred za vse sezname. Obstajajo tri kategorije implementacij IList: samo za branje, fiksna velikost in spremenljiva velikost.
4) IDictionary Implementacija IDictionary je zbirka parov ključ/vrednost, ki sama izvaja ICollection in IEnumerable vmesnike je osnovni vmesnik zbirke parov ključ/vrednost. Obstajajo tri kategorije implementacij IDictionary: samo za branje, fiksne velikosti in spremenljive velikosti. IDictionary lahko imenujemo slovar, zemljevid ali seznam shash datotek in dostopa do vrednosti na podlagi ključev (katerekoli vrste).
2. Razredi zbirk, ki jih je mogoče neposredno uporabiti v System.Collections, so: 1) ArrayList Implementirajte vmesnike: IList, ICollection, IEnumerable Dokler zbirka ni spremenjena, lahko ArrayList varno podpira več bralcev hkrati Ko se elementi dodajajo v ArrayList, se kapaciteta samodejno poveča na zahtevo z prerazporeditvijo (2-kratno povečanje) Če morate ustvariti polje objektov, vendar ne poznate njegove velikosti vnaprej, lahko uporabite ArrayList ArrayList vse elemente označuje kot objekte, zato ga je treba tipkati ob dostopu do elementov v ArrayList Prednosti: dinamično spreminjanje velikosti, prilagodljivo in priročno vstavljanje ter odstranjevanje elementov, sortiranje Slabosti: Zmogljivost vstavljanja ni tako dobra kot pri nizih, ne pri močnih tipih
2) BitArray Implementirajte vmesnike: ICollection in IEnumerable Upravljanje stisnjenih polj bitnih vrednosti.
3) Hashtable Implementirajte vmesnike: IDictionary, ICollection, IEnumerable V hashtabelo lahko prosto dodajate in odstranjujete elemente, nekatere kot ArrayList, vendar brez obremenitve zmogljivosti
4) SortedList Implementirajte vmesnike: IDictionary, ICollection, IEnumerable SortedLIst združuje prednosti ArrayList in Hashtable ter ga je mogoče razvrstiti po ključni vrednosti
5) Čakalna vrsta Implementirajte vmesnike: ICollection in IEnumerable Quequeji so vrste, prvi noter, prvi ven dostop do posameznih elementov Lahko pokličete metodo GetEnumerator() objekta Queque, da objekt IEnumerator iterira skozi elemente v vrsti
6) Stack Implementirajte vmesnike: ICollection in IEnumerable Sklad je sklad, ki dostopa do posameznih elementov po principu zadnji noter, prvi ven Lahko pokličete metodo GetEnumerator() objekta Stack, da objekt IEnumerator iterira skozi elemente v skladu
3. Zgoraj omenjeni razredi zbirk so vsi splošni razredi zbirk in večina elementov, ki jih sprejemajo, je tipa objekta, ko je objekt vstavljen v Po zbirki se izvirne tipne informacije izgubijo – to pomeni, da ti splošni razredi zbirk niso močno tipizirani Rešitev je uporaba močno tipiziranih razredov zbirk Imenski prostor System.Collections System.Collections.Specialized imenski prostor Nekateri razredi lahko izpolnjujejo zahteve in jih je mogoče uporabljati neposredno ali dedovati
|