See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 22702|Vastuse: 0

[Allikas] C#-s on mitut tüüpi kogumiste rollup'e

[Kopeeri link]
Postitatud 11.11.2014 08:44:59 | | |
Kogumik, mis esindab objektide kogumit, millele pääseb ligi iga elemendi läbimise teel (eriti sellele pääseb ligi foreach tsükli kaudu)
Kogu sisaldab mitut elementi, st on olemas kollektsiooniklassi objekt ja N elementi objekti

Kuna iga kollektsiooniklass rakendab IEnumerable liidest, on igal kogumisklassi objektil GetEnumerator() meetod, mis võib tagastada objekti, mis rakendab IEnumeratori liidest, mis ei ole ei kollektsiooniklassi objekt ega kollektsioonielemendi klassiobjekt, vaid sõltumatu klassiobjekt. See objekt võimaldab läbi käia iga elemendiobjekti kollektsiooniklassi objektis

Kui kogumisklass on kasutaja määratletud koguklass, peab kasutaja rakendama oma GetEnumerator() meetodi, vastasel juhul ei saa kasutada tsükliid. Loomulikult tuleb ka selle kohandatud kogumisklassi (liidese teostav klass) vastav IEnumerator klass kohandada

Näiteks IEnumerator, mis vastab ArrayList kogumisklassile, on ArrayListEnumeratorSimple
            IEnumerator, mis vastab massiivi kogumise klassile, on SZArrayEnumerator
      (Kumbki klass ei ole kaetud .NET Framework Class Library dokumentatsioonis (MSDN))

1. System.Colloctions liidesed, mis esindavad kogu käitumist, on:
1) ICollection
Määrake kõigi kogude suurus, enumite arv ja sünkroniseerimismeetodid. Tuletatud IEnumerable'ist
See määratleb kogumisklassi kõige põhilisema käitumise ning kõik kollektsiooniklassid rakendavad seda liidest (baasliides)
Aga selle käitumine on liiga lihtne: see on peamiselt Counti omadus ja pole eriti mõtet seda üksi rakendada

2) IEnumerable
Paljasta loendamine, mis toetab lihtsaid iteratsioone hulga peal
Sellel on ainult üks meetod, GetEnumerator(), mis tagastab IEnumeratori liidese, mille kaudu saab kogu läbi liikuda
Põhimõtteliselt rakendavad kõik kollektsiooniklassid seda liidest

3) IList
IList rakendus on väärtuste kogum, mida saab sorteerida ja millele liikmete jaoks pääseb ligi indeksi järgi, ning see ise rakendab ICollectioni ja IEnumerable liidesed
on kõigi nimekirjade abstraktne baasklass. IList rakendusi jagunevad kolme kategooriasse: ainult lugemiseks, fikseeritud suurusega ja muutuva suurusega.

4) IDictionary
IDictionary rakendus on võtme/väärtuse paaride kogum, mis omakorda rakendab ICollectioni ja IEnumerable liidesed
on võtme/väärtuse paaride kogumi baasliides. IDictionary rakendusi jagunevad kolme kategooriasse: ainult lugemiseks, fikseeritud suurusega ja muutuva suurusega.
IDictionary'd võib nimetada sõnastikuks, kaardiks või shash listiks ning see pääseb ligi võtmete (igat tüüpi võtmete) alusel.

2. Kogumisklassid, mida saab kasutada otse System.Collectionsis, on:
1) ArrayList
Rakenda liideseid: IList, ICollection, IEnumerable
Kui kogumikku ei muudeta, saab ArrayList ohutult toetada mitut lugejat samaaegselt
Kui elemente lisatakse ArrayListile, suureneb mahutavus automaatselt nõudmisel, jagades ümber (2x suurem)
Kui pead looma massiivi objektidest, kuid sa ei tea eelnevalt massiivi suurust, võid kasutada ArrayListi
ArrayList viitab kõigile elementidele objektidena, seega tuleb see tippida, kui ArrayListis elementidele ligi pääsed.
Plussid: Dünaamiline suurus, paindlik ja mugav elementide lisamine ja eemaldamine, sorteeritavus
Puudused: Sisestusvõime ei ole nii hea kui massiivid, mitte tugevad tüübid

2) BitArray
Rakenda liideseid: ICollection ja IEnumerable
Halda tihendatud bitiväärtuste massiivisid.

3) Räsitabel
Rakenda liideseid: IDictionary, ICollection, IEnumerable
Sa saad vabalt lisada ja eemaldada elemente Hashtable'i, mõned nagu ArrayList, kuid ilma jõudluskuluta

4) SortedList
Rakenda liideseid: IDictionary, ICollection, IEnumerable
SortedLIst ühendab ArrayListi ja Hashtable'i eelised ning seda saab sorteerida võtmeväärtuse järgi

5) Järjekord
Rakenda liideseid: ICollection ja IEnumerable
Queque'id on järjekorrad, esimesena sisse, esimesena välja ligipääs üksikutele elementidele
Saad kutsuda Queque objekti GetEnumerator() meetodit, et IEnumerator objekt saaks järjekorra elementide vahel iteratsiooni teha

6) Stack
Rakenda liideseid: ICollection ja IEnumerable
Virn on virn, mis pääseb ligi üksikutele elementidele viimase sisse ja esimesena välja põhimõttel
Saad kutsuda Stack objekti GetEnumerator() meetodit, et IEnumerator objekt saaks pinna elementide vahel iteratsiooni teha

3. Ülalmainitud kogumisklassid on kõik üldised koguklassid ning enamik elemente, mida nad aktsepteerivad, kuuluvad objekti tüübile, kui objekt lisatakse
Pärast kogumist kaob algne tüübiinfo – see tähendab, et need üldised kollektsiooniklassid ei ole tugevalt tüübistatud
Lahendus on kasutada tugevalt tüübistatud kollektsiooniklasse
System.Collections nimeruum
System.Collections.Spetsialiseeritud nimeruum Mõned klassid vastavad nõuetele ja neid saab kasutada otse või pärida





Eelmine:Avatud kiri enamusele peenistele vallaliste päeva eelõhtul
Järgmine:C# Generic Range Rover (Turn)
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com