Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 22702|Odgovoriti: 0

[Vir] Obstaja več vrst zvijanja zbirk v C#

[Kopiraj povezavo]
Objavljeno na 11. 11. 2014 08:44:59 | | |
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





Prejšnji:Odprto pismo večini kretenov na predvečer dneva samskih
Naslednji:C# Generični Range Rover (zavoj)
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com