Kokoelma, joka edustaa joukkoa olioita, joihin pääsee käsiksi kulkemalla jokaisen alkion läpi (erityisesti siihen pääsee forach-silmukan avulla) Kokoelma sisältää useita alkioita, eli on olemassa kokoelmaluokkaobjekti ja N elementtiobjektia
Koska mikä tahansa kokoelmaluokka toteuttaa IEnumerable-rajapinnan, jokaisella kokoelmaluokkaobjektilla on GetEnumerator()-metodi, joka voi palauttaa objektin, joka toteuttaa IEnumerator-rajapinnan, joka ei ole kokoelmaluokkaobjekti eikä kokoelma-elementtiluokka-objekti, vaan itsenäinen luokkaobjekti. Tämän objektin avulla voit käydä läpi jokaisen kokoelmaluokan elementtiobjektin
Jos kokoelmaluokka on käyttäjän määrittelemä kokoelmaluokka, käyttäjän on toteutettava GetEnumerator()-metodi, muuten silmukoita ei voi käyttää. Tietenkin myös IEnumerator-luokka, joka vastaa tätä räätälöityä kokoelmaluokkaa (luokka, joka toteuttaa rajapinnan), täytyy myös räätälöidä
Esimerkiksi IEnumerator, joka vastaa ArrayList-kokoelmaluokkaa, on ArrayListEnumeratorSimple Taulukon kokoelmaluokkaa vastaava IEnumerator on SZArrayEnumerator (Kumpaakaan luokkaa ei käsitellä .NET Framework Class Library -dokumentaatiossa (MSDN))
1. System.Colloctions -sarjan rajapinnat, jotka edustavat kokoelman käyttäytymistä, ovat: 1) ICollection Määrittele koko, enumien lukumäärä ja synkronointimenetelmät kaikille kokoelmille. Johdettu IEnumerablesta Se määrittelee kokoelmaluokan perustavanlaatuisimman käyttäytymisen, ja kaikki kokoelmaluokat toteuttavat tämän rajapinnan (perusrajapinnan) Mutta sen käyttäytyminen on liian yksinkertaista: se on pääasiassa Count-ominaisuus, eikä sen toteuttaminen yksin ole kovin järkevää
2) IEnumerable Paljasta luettelo, joka tukee yksinkertaisia iteraatioita joukossa Sillä on vain yksi metodi, GetEnumerator(), joka palauttaa IEnumerator-rajapinnan, jonka kautta se voi kulkea kokoelman läpi Käytännössä kaikki kokoelmaluokat toteuttavat tämän rajapinnan
3) IList IList-toteutus on kokoelma arvoja, joita voi lajitella ja jotka jäsenilleen voidaan käyttää indeksin avulla, ja se toteuttaa ICollection- ja IEnumerable-rajapinnat on abstrakti perusluokka kaikille listoille. IList-toteutuksia on kolme kategoriaa: vain luku -, kiinteäkokoinen ja muuttujakokoinen.
4) IDictionary IDictionary-toteutus on kokoelma avain/arvo-pareja, jotka toteuttavat ICollection- ja IEnumerable-rajapinnat on avain/arvoparien kokoelman perusrajapinta. IDictionary-toteutuksia on kolme kategoriaa: vain luku -, kiinteäkokoinen ja muuttujakokoinen. IDictionary voidaan kutsua sanakirjaksi, kartaksi tai shash-listaksi, ja se käyttää arvoja avainten perusteella (minkä tahansa tyyppisiä).
2. System.Collectionsissa suoraan käytettävät kokoelmaluokat ovat: 1) ArrayList Toteuta rajapinnat: IList, ICollection, IEnumerable Niin kauan kuin kokoelmaa ei muuteta, ArrayList voi turvallisesti tukea useita lukijoita samanaikaisesti Kun elementtejä lisätään ArrayListiin, kapasiteettia lisätään automaattisesti tarpeen mukaan uudelleenkohdentamalla (2-kertainen lisäys) Jos sinun täytyy luoda taulukko objekteista, mutta et tiedä taulukon kokoa etukäteen, voit käyttää ArrayListia ArrayList viittaa kaikkiin alkioihin objekteina, joten se täytyy kirjoittaa, kun käytetään elementtejä ArrayListissa Plussat: Koon dynaaminen muutos, elementtien joustava ja kätevä lisääminen ja poistaminen, lajittelukyky Haitat: Lisäyssuorituskyky ei ole yhtä hyvä kuin taulukoissa, ei vahvoissa tyypeissä
2) BitArray Toteuta rajapinnat: ICollection ja IEnumerable Hallinnoi pakattuja bittiarvojen taulukoita.
3) Hajautustaulukko Toteuta rajapinnat: IDictionary, ICollection, IEnumerable Voit vapaasti lisätä ja poistaa elementtejä Hashtableen, jotkut kuten ArrayList, mutta ilman suorituskykykuormaa
4) SortedList Toteuta rajapinnat: IDictionary, ICollection, IEnumerable SortedLIst yhdistää ArrayListin ja Hashtablen edut, ja se voidaan lajitella avainarvon mukaan
5) Jono Toteuta rajapinnat: ICollection ja IEnumerable Quequet ovat jonoja, jotka pääsevät sisään ja ulos yksittäisiin elementteihin. Voit kutsua Queque-objektin GetEnumerator()-metodia, jotta IEnumerator-objekti käy läpi jonon elementit
6) Pino Toteuta rajapinnat: ICollection ja IEnumerable Pino on pino, joka käyttää yksittäisiä elementtejä viimeisimmässä sisään, ensimmäisessä ulos -periaatteessa Voit kutsua Stack-objektin GetEnumerator()-metodia, jotta IEnumerator-objekti käy läpi pinon elementit
3. Edellä mainitut kokoelmaluokat ovat kaikki yleisiä kokoelmaluokkia, ja suurin osa niiden hyväksymistä alkioista kuuluu Olio-tyyppiin, kun objekti sijoitetaan Kokoelman jälkeen alkuperäinen tyyppitieto katoaa – eli nämä yleiset kokoelmaluokat eivät ole vahvasti tyypitettyjä Kiertotie on käyttää vahvasti tyypitettyjä kokoelmaluokkia System.Collections-nimiavaruus System.Collections.Specialized nimiavaruus Jotkut luokat voivat täyttää vaatimukset ja niitä voidaan käyttää suoraan tai periä
|