Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 22702|Svar: 0

[Kilde] Der findes flere typer rollups for samlinger i C#

[Kopier link]
Opslået på 11/11/2014 08.44.59 | | |
En samling, der repræsenterer et sæt objekter, som kan tilgås ved at gennemgå hvert element (især kan den tilgås via foreach loop)
En samling indeholder flere elementer, dvs. der findes et samlingsklasseobjekt og N elementobjekter

Fordi enhver samlingsklasse implementerer IEnumerable-grænsefladen, har ethvert samlingsklasseobjekt en GetEnumerator()-metode, som kan returnere et objekt, der implementerer IEnumerator-grænsefladen, som hverken er et samlingsklasseobjekt eller et samlingselement-klasseobjekt, men et uafhængigt klasseobjekt. Dette objekt tillader dig at iterere gennem hvert elementobjekt i samlingsklasseobjektet

Hvis samlingsklassen er en brugerdefineret samlingsklasse, skal brugeren implementere dens GetEnumerator()-metode, ellers kan løkker ikke bruges. Selvfølgelig skal IEnumerator-klassen, der svarer til denne custom collection-klasse (klassen, der implementerer interfacet), også tilpasses

For eksempel er IEnumeratoren, der svarer til ArrayList-samlingsklassen, ArrayListEnumeratorSimple
            IEnumeratoren, der svarer til Array-samlingsklassen, er SZArrayEnumerator
      (Ingen af klasserne er dækket i .NET Framework Class Library-dokumentationen (MSDN))

1. Grænsefladerne i System.Colloctions, der repræsenterer samlingens adfærd, er:
1) ICollection
Definér størrelsen, antallet af enums og synkroniseringsmetoder for alle samlinger. Afledt af IEnumerable
Den definerer den mest grundlæggende adfærd for samlingsklassen, og alle samlingsklasser implementerer dette interface (basisgrænseflade)
Men dens adfærd er for grundlæggende: det er hovedsageligt en Count-egenskab, og det giver ikke meget mening at implementere den alene

2) IEnumerable
Eksponér en opramning, der understøtter simple iterationer på en mængde
Den har kun én metode, GetEnumerator(), som returnerer et IEnumerator-interface, hvorigennem den kan gennemgå samlingen
Grundlæggende implementerer alle samlingsklasser dette interface

3) IList
IList-implementeringen er en samling værdier, der kan sorteres og kan tilgås efter indeks for dens medlemmer, og den implementerer selv ICollection- og IEnumerable-grænsefladerne
er den abstrakte baseklasse for alle lister. Der findes tre kategorier af IList-implementeringer: skrivebeskyttet, fast størrelse og variabel størrelse.

4) IDIKOLOGI
IDictionary-implementeringen er en samling af nøgle/værdi-par, der selv implementerer ICollection og IEnumerable grænseflader
er basisgrænsefladen for en samling nøgle/værdi-par. Der findes tre kategorier af IDictionary-implementeringer: skrivebeskyttet, fast størrelse og variabel størrelse.
IDictionary kan kaldes en ordbog, et kort eller en shash-liste, og den tilgår værdier baseret på nøgler (af enhver type).

2. De samlingsklasser, der kan bruges direkte i System.Collections, er:
1) ArrayList
Implementér grænseflader: IList, ICollection, IEnumerable
Så længe samlingen ikke ændres, kan ArrayList sikkert understøtte flere læsere samtidig
Når elementer tilføjes til ArrayList, øges kapaciteten automatisk efter behov ved omfordeling (2x forøgelse)
Hvis du skal oprette et array af objekter, men ikke kender størrelsen på arrayet på forhånd, kan du bruge ArrayList
ArrayList refererer til alle elementer som objekter, så det skal skrives, når man tilgår elementer i ArrayList
Fordele: Dynamisk ændring af størrelsen, fleksibel og bekvem indsættelse og fjernelse af elementer, sorterbarhed
Ulemper: Indsættelsesydelsen er ikke så god som arrays, ikke stærke typer

2) BitArray
Implementér grænseflader: ICollection og IEtallable
Styr komprimerede arrays af bitværdier.

3) Hashtabel
Implementér grænseflader: IDictionary, ICollection, IEnumerable
Du kan frit tilføje og fjerne elementer til hashtabellen, nogle som ArrayList, men uden performance-overhead

4) Sorteret liste
Implementér grænseflader: IDictionary, ICollection, IEnumerable
SortedLIst kombinerer fordelene ved ArrayList og Hashtable og kan sorteres efter nøgleværdi

5) Kø
Implementér grænseflader: ICollection og IEtallable
Queques er køer, først ind, først ud adgang til individuelle elementer
Du kan kalde GetEnumerator()-metoden for Queque-objektet for at få IEnumerator-objektet til at iterere gennem elementerne i køen

6) Stack
Implementér grænseflader: ICollection og IEtallable
En stak er en stak, der tilgår individuelle elementer på en sidst-ind, først-ud-basis
Du kan kalde GetEnumerator()-metoden for Stack-objektet for at få IEnumerator-objektet til at iterere gennem elementerne i stakken

3. De ovennævnte samlingsklasser er alle generelle samlingsklasser, og de fleste af de elementer, de accepterer, er af Objekttypen, når objektet placeres i
Efter samlingen går den oprindelige typeinformation tabt – det vil sige, at disse generelle samlingsklasser ikke er stærkt typede
Løsningen er at bruge stærkt typede samlingsklasser
System.Collections-navnerum
System.Collections.Specialiseret navnerum Nogle klasser kan opfylde kravene og kan bruges direkte eller arves





Tidligere:Et åbent brev til størstedelen af dicks på aftenen før Singles' Day
Næste:C# Generisk Range Rover (Tur)
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com