Kolekcija, kas attēlo objektu kopu, kurai var piekļūt, šķērsojot katru elementu (jo īpaši, tai var piekļūt, izmantojot foreach cilpu) Kolekcija satur vairākus elementus, t.i., ir kolekcijas klases objekts un N elementu objekti
Tā kā jebkura kolekcijas klase ievieš IEnumerable interfeisu, jebkuram kolekcijas klases objektam ir GetEnumerator() metode, kas var atgriezt objektu, kas ievieš IEnumerator interfeisu, kas nav ne kolekcijas klases objekts, ne kolekcijas elementa klases objekts, tas ir neatkarīgs klases objekts. Šis objekts ļauj atkārtot katru elementa objektu kolekcijas klases objektā
Ja kolekcijas klase ir lietotāja definēta kolekcijas klase, lietotājam ir jāievieš sava GetEnumerator() metode, pretējā gadījumā cilpas nevar izmantot. Protams, ir jāpielāgo arī IEnumerator klase, kas atbilst šai pielāgotās kolekcijas klasei (klasei, kas ievieš saskarni)
Piemēram, IEnumerator, kas atbilst kolekcijas klasei ArrayList, ir ArrayListEnumeratorSimple IEnumerator, kas atbilst masīva kolekcijas klasei, ir SZArrayEnumerator (Neviena no klasēm nav iekļauta .NET Framework klases bibliotēkas dokumentācijā (MSDN))
1. System.Colloctions saskarnes, kas atspoguļo kolekcijas uzvedību, ir: 1) Iesniegšana Definējiet lielumu, uzskaitījumu skaitu un sinhronizācijas metodes visām kolekcijām. Atvasināts no IEnumerable Tas definē kolekcijas klases visvienkāršāko uzvedību, un visas kolekcijas klases īsteno šo interfeisu (bāzes interfeisu) Bet tā uzvedība ir pārāk vienkārša: tas galvenokārt ir grāfa rekvizīts, un nav lielas jēgas to īstenot atsevišķi
2)IEskaitāms Tāda uzskaitījuma atklāšana, kas atbalsta vienkāršas iterācijas kopā Tam ir tikai viena metode, GetEnumerator(), kas atgriež IEnumerator interfeisu, caur kuru tas var šķērsot kolekciju Būtībā visas kolekcijas klases īsteno šo interfeisu
3) IList IList ieviešana ir vērtību kolekcija, kas ir kārtojama un kurai var piekļūt ar indeksu tās dalībniekiem, un tā pati ievieš ICollection un IEnumerable saskarnes ir abstraktā pamatklase visiem sarakstiem. Ir trīs IList ieviešanas kategorijas: tikai lasāma, fiksēta izmēra un mainīga izmēra.
4)IDictionary IDictionary ieviešana ir atslēgu/vērtību pāru kolekcija, kas pati ievieš ICollection un IEnumerable saskarnes ir atslēgas/vērtību pāru kolekcijas pamata interfeiss. Ir trīs IDictionary ieviešanas kategorijas: tikai lasāma, fiksēta izmēra un mainīga izmēra. IDictionary var saukt par vārdnīcu, karti vai hash sarakstu, un tas piekļūst vērtībām, pamatojoties uz atslēgām (jebkura veida).
2. Kolekcijas klases, kuras var izmantot tieši System.Collections, ir šādas: 1) Masīvu saraksts Ieviest saskarnes: IList, ICollection, IEnumerable Kamēr kolekcija netiek modificēta, ArrayList var droši atbalstīt vairākus lasītājus vienlaicīgi Kad elementi tiek pievienoti ArrayList, noslodze tiek automātiski palielināta pēc pieprasījuma, pārdalot (2x palielinājums) Ja nepieciešams izveidot objektu masīvu, bet iepriekš nezināt masīva lielumu, varat izmantot ArrayList ArrayList attiecas uz visiem elementiem kā objektiem, tāpēc tas ir jāieraksta, piekļūstot elementiem ArrayList Plusi: Dinamiski mainiet izmēru, elastīgu un ērtu elementu ievietošanu un noņemšanu, šķirojamību Trūkumi: Ievietošanas veiktspēja nav tik laba kā masīvi, nav spēcīgi veidi
2) BitArray Ieviest saskarnes: ICollection un IEnumerable Pārvaldiet saspiestus bitu vērtību masīvus.
3) Jaucējtabula Ieviest saskarnes: IDictionary, ICollection, IEnumerable Jūs varat brīvi pievienot un noņemt elementus Hashtable, daži, piemēram, ArrayList, bet bez veiktspējas pieskaitāmām izmaksām
4) Kārtots saraksts Ieviest saskarnes: IDictionary, ICollection, IEnumerable SortedLIst apvieno ArrayList un Hashtable priekšrocības, un to var kārtot pēc atslēgas vērtības
5)Rinda Ieviest saskarnes: ICollection un IEnumerable Queques ir rindas, pirmais iekšā, pirmais ārā piekļuve atsevišķiem elementiem Varat izsaukt objekta Queque metodi GetEnumerator(), lai panāktu, ka objekts IEnumerator atkārto rindas elementus
6) Kaudze Ieviest saskarnes: ICollection un IEnumerable Kaudze ir kaudze, kas piekļūst atsevišķiem elementiem pēdējā iekšā, pirmajā vietā Varat izsaukt objekta Stack metodi GetEnumerator(), lai panāktu, ka IEnumerator objekts atkārtojas caur steka elementiem
3. Iepriekš minētās kolekcijas klases ir visas vispārīgās kolekcijas klases, un lielākā daļa elementu, ko tās pieņem, ir Objekta tipa, kad objekts tiek ievietots Pēc kolekcijas sākotnējā tipa informācija tiek zaudēta - tas ir, šīs vispārējās kolekcijas klases nav stingri ierakstītas Risinājums ir izmantot stipri drukātas kolekcijas klases System.Collections nosaukumvieta System.Collections.Specialized nosaukumtelpa Dažas klases var atbilst prasībām, un tās var izmantot tieši vai pārmantot
|