C# Collections Tutorial med eksempler
⚡ Smart oppsummering
Samlinger i C# gir en fleksibel måte å lagre og administrere grupper av objekter på. I motsetning til arrayer vokser og krymper samlinger under kjøretid, og navnerommene System.Collections og System.Collections.Generic leverer ferdige typer for lister, ordbøker, stabler og køer.
I vår forrige opplæring har vi lært om hvordan vi kan bruke arrays i C#. La oss få en rask oversikt over det, Arrays i programmering brukes til å gruppere et sett med relaterte objekter. Så man kan lage en matrise eller et sett med heltall, som kan nås via ett variabelnavn.
Hva er samlinger i C#?
Samlinger ligner på arrays, gir det en mer fleksibel måte å jobbe med en gruppe objekter på.
I matriser ville du ha lagt merke til at du må definere antall elementer i en matrise på forhånd. Dette måtte gjøres når matrisen ble deklarert.
Men i en samling trenger du ikke definere størrelsen på samlingen på forhånd. Du kan legge til elementer eller til og med fjerne elementer fra samlingen når som helst. Dette kapittelet vil fokusere på hvordan vi kan jobbe med de forskjellige samlingene som er tilgjengelige i C#.
System.Samlinger Klasser
.NET Framework grupperer de originale ikke-generiske samlingsklassene i navnerommet System.Collections. Tabellen nedenfor oppsummerer hovedtypene du kan bruke med en gang.
| Samling | Tekniske beskrivelser |
| ArrayList | ArrayList-samlingen ligner på Arrays datatype i C#. Den største forskjellen er den dynamiske karakteren til array-listesamlingen. |
| Stable | Stakken er en spesialsamling som representerer et sist inn, først ut (LIFO)-konsept. |
| køer | Køen er en spesialkolleksjon som representerer et først inn, først ut-konsept. |
| Hastbar | En hash-tabell er en spesiell samling som brukes til å lagre nøkkelverdi-elementer. |
| Sortert Liste | SortedList er en samling som lagrer nøkkel-verdi-par i stigende rekkefølge av nøkkel som standard. |
| BitArray | En bitarray er en matrise med datastruktur som lagrer biter. |
Generiske samlinger i C#
De ikke-generiske klassene ovenfor lagrer hvert element som et generelt objekt, noe som betyr at kompilatoren ikke kan sjekke typen, og programmet betaler en liten kostnad for å sette verdier i boks. For å løse dette la C# til navnerommet System.Collections.Generic, der hver samling er bundet til én deklarert type.
En generisk samling som Liste aksepterer bare strenger, slik at feil fanges opp ved kompileringstid og ingen konvertering er nødvendig når du leser et element tilbake. Dette gjør generiske samlinger tryggere, raskere og enklere å lese, og det er derfor de er standardvalget i moderne C#-kode.
De vanligste generiske samlingene er listet opp nedenfor:
- Liste : En skalerbar, indeksbasert liste, den generiske erstatningen for ArrayList.
- Ordbok : Lagrer nøkkel-verdi-par med raske, hash-baserte oppslag.
- HashSet : Inneholder kun unike verdier og støtter settoperasjoner som union.
- Kø : En først inn, først ut-kolleksjon, den generiske versjonen av Queue.
- Stable : En «sist inn, først ut»-kolleksjon, den generiske versjonen av Stack.
- Sortert liste : Holder nøkkelverdipar sortert etter nøkkel i stigende rekkefølge.
Eksempel på C#-listesamling
Listen er den mest brukte generiske samlingen fordi den oppfører seg som en dynamisk matrise. Eksemplet nedenfor oppretter en liste med strenger, legger til og fjerner elementer, leser størrelsen og skriver deretter ut de resterende verdiene. All koden er skrevet i Program.cs-filen.
Trinn 1) Importer navnerommet System.Collections.Generic og deklarer en liste med strenger.
Trinn 2) Legg til elementer med Legg til-metoden og slett ett med Fjern-metoden.
Trinn 3) Les Count-egenskapen, og gå deretter gjennom listen i løkke med en foreach-setning.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Forklaring:-
- Navnerommet System.Collections.Generic importeres slik at List-typen er tilgjengelig for programmet.
- En ny liste kalte veiledninger opprettes, og tre navn legges til med Add-metoden.
- Fjern-metoden sletter verdien «Python«, som etterlater to elementer på listen.
- Count-egenskapen returnerer antall elementer, og foreach-løkken skriver ut hver gjenværende verdi i rekkefølge.
Når programmet kjører, skriver det først ut antallet 2, Etterfulgt av Java og Kotlin på separate linjer. Dette viser hvordan en samling endrer størrelsen under kjøring, noe en fast array ikke kan gjøre.
Forskjellen mellom arrayer og samlinger i C#
Både en matrise og en samling grupperer relaterte elementer under ett navn, men de oppfører seg annerledes når programmet kjører. Å vite når du skal bruke hver av dem hjelper deg med å skrive renere og mer effektiv kode.
De viktigste forskjellene er listet opp nedenfor:
- Størrelse: En array har en fast lengde satt ved deklarasjon, mens en samling kan vokse eller krympe når som helst.
- Typehåndtering: En array lagrer én type, mens en samling kan være typesikker med generiske objekter eller holde objekter av blandede typer når de ikke er generiske.
- Sted: Arrayer er innebygd i språket, mens samlingsklasser ligger i navnerommene System.Collections og System.Collections.Generic.
- Innebygde operasjoner: Samlinger tilbyr klare metoder for å legge til, fjerne, søke etter og sortere elementer, mens arrayer bare gir grunnleggende indeksert tilgang.
- Beste bruk: Velg en matrise når antallet elementer er kjent og fast, og en samling når antallet endres etter hvert som programmet kjører.
Kort sagt, arrayer er best for data med fast størrelse, mens samlinger gir fleksibiliteten som de fleste virkelige applikasjoner trenger.

