Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 22702|Vastaus: 0

[Lähde] C#:ssa on useita erilaisia rollup-tyyppejä keräyksille

[Kopioi linkki]
Julkaistu 11.11.2014 8.44.59 | | |
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ä





Edellinen:Avoin kirje suurimmalle osalle sinkkupäivän aattona
Seuraava:C# Yleinen Range Rover (Turn)
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com