En samling som representerer et sett med objekter som kan nås ved å gå gjennom hvert element (spesielt kan den nås ved hjelp av foreach loop) En samling inneholder flere elementer, det vil si at det finnes et samlingsklasseobjekt og N elementobjekter
Fordi enhver samlingsklasse implementerer IEnumerable-grensesnittet, har ethvert samlingsklasseobjekt en GetEnumerator()-metode, som kan returnere et objekt som implementerer IEnumerator-grensesnittet, som verken er et samlingsklasseobjekt eller et samlingselement-klasseobjekt, det er et uavhengig klasseobjekt. Dette objektet lar deg iterere gjennom hvert elementobjekt i samlingsklasseobjektet
Hvis samlingsklassen er en brukerdefinert samlingsklasse, må brukeren implementere sin GetEnumerator()-metode, ellers kan ikke løkker brukes. Selvfølgelig må også IEnumerator-klassen som tilsvarer denne egendefinerte samlingsklassen (klassen som implementerer grensesnittet) tilpasses
For eksempel er IEnumeratoren som tilsvarer ArrayList-samlingsklassen ArrayListEnumeratorSimple IEnumeratoren som tilsvarer Array-samlingsklassen er SZArrayEnumerator (Ingen av klassene dekkes i .NET Framework Class Library-dokumentasjonen (MSDN))
1. Grensesnittene i System. Kolloksjoner som representerer oppførselen til samlingen er: 1) IColleksjon Definer størrelse, antall enums og synkroniseringsmetoder for alle samlinger. Avledet fra IEnumerable Den definerer den mest grunnleggende oppførselen til samlingsklassen, og alle samlingsklasser implementerer dette grensesnittet (basisgrensesnittet) Men oppførselen er for grunnleggende: det er hovedsakelig en Count-egenskap, og det gir ikke mye mening å implementere den alene
2) IEtallable Eksponer en oppramsning som støtter enkle iterasjoner på en mengde Den har bare én metode, GetEnumerator(), som returnerer et IEnumerator-grensesnitt som den kan navigere gjennom samlingen I bunn og grunn implementerer alle samlingsklasser dette grensesnittet
3) IList IList-implementasjonen er en samling verdier som kan sorteres og kan nås etter indeks for medlemmene, og den implementerer selv ICollection- og IEnumerable-grensesnittene er den abstrakte basisklassen for alle lister. Det finnes tre kategorier av IList-implementasjoner: skrivebeskyttet, fast størrelse og variabel størrelse.
4) IDictionary IDictionary-implementasjonen er en samling av nøkkel/verdi-par som selv implementerer ICollection og IEnumerable grensesnitt er grunngrensesnittet til en samling nøkkel/verdi-par. Det finnes tre kategorier av IDictionary-implementasjoner: skrivebeskyttet, fast størrelse og variabel størrelse. IDictionary kan kalles en ordbok, kart eller shash-liste, og den får tilgang til verdier basert på nøkler (av hvilken som helst type).
2. Samlingsklassene som kan brukes direkte i System. Samlinger er: 1) ArrayList Implementer grensesnitt: IList, ICollection, IEnumerable Så lenge samlingen ikke endres, kan ArrayList trygt støtte flere lesere samtidig Når elementer legges til ArrayList, økes kapasiteten automatisk etter behov ved omfordeling (2x økning) Hvis du trenger å lage et array av objekter, men ikke vet størrelsen på arrayet på forhånd, kan du bruke ArrayList ArrayList refererer til alle elementer som objekter, så det må types når man får tilgang til elementer i ArrayList Fordeler: Dynamisk endring av størrelse, fleksibel og praktisk innsetting og fjerning av elementer, sorterbarhet Ulemper: Innsettingsytelsen er ikke like god som arrays, ikke sterke typer
2) BitArray Implementer grensesnitt: ICollection og IEnumerable Håndter komprimerte matriser av bitverdier.
3) Hashtabell Implementer grensesnitt: IDictionary, ICollection, IEnumerable Du kan fritt legge til og fjerne elementer i Hashtabellen, noen som ArrayList, men uten ytelseskostnader
4) Sortert liste Implementer grensesnitt: IDictionary, ICollection, IEnumerable SortedLIst kombinerer fordelene til ArrayList og Hashtable, og kan sorteres etter nøkkelverdi
5) Kø Implementer grensesnitt: ICollection og IEnumerable Queques er køer, først inn, først ut tilgang til individuelle elementer Du kan kalle GetEnumerator()-metoden til Queque-objektet for å få IEnumerator-objektet til å iterere gjennom elementene i køen
6) Stack Implementer grensesnitt: ICollection og IEnumerable En stabel er en stabel som får tilgang til individuelle elementer på en sist-inn, først-ut-basis Du kan kalle GetEnumerator()-metoden til Stack-objektet for å få IEnumerator-objektet til å iterere gjennom elementene i stakken
3. Samlingsklassene nevnt ovenfor er alle generelle samlingsklasser, og de fleste elementene de aksepterer er av objekttypen når objektet settes i Etter samlingen går den opprinnelige typeinformasjonen tapt – det vil si at disse generelle samlingsklassene ikke er sterkt typet Løsningen er å bruke sterkt typede samlingsklasser System.Collections-navnerom System.Collections.Specialized navnerom Noen klasser kan oppfylle kravene og kan brukes direkte eller arves
|