Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 22702|Atbildi: 0

[Avots] C# kolekcijām ir vairāki apkopojumu veidi

[Kopēt saiti]
Publicēts 11.11.2014 08:44:59 | | |
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





Iepriekšējo:Atklāta vēstule lielākajai daļai dicks vientuļnieku dienas priekšvakarā
Nākamo:C# vispārējais Range Rover (pagrieziens)
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com