Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 22702|Svare: 0

[Kilde] Det finnes flere typer rollups for samlinger i C#

[Kopier lenke]
Publisert på 11.11.2014 08:44:59 | | |
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





Foregående:Et åpent brev til flertallet av på kvelden før Singles' Day
Neste:C# Generisk Range Rover (Tur)
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com