Handledning för C# Collections med exempel
⚡ Smart sammanfattning
Samlingar i C# erbjuder ett flexibelt sätt att lagra och hantera grupper av objekt. Till skillnad från arrayer växer och krymper samlingar vid körning, och namnrymderna System.Collections och System.Collections.Generic tillhandahåller färdiga typer för listor, ordböcker, stackar och köer.
I vår tidigare handledning har vi lärt oss om hur vi kan använda arrayer i C#. Låt oss få en snabb överblick av det, Arrays i programmering används för att gruppera en uppsättning relaterade objekt. Så man kan skapa en array eller en uppsättning heltal, som kan nås via ett variabelnamn.
Vad är samlingar i C#?
Samlingar liknar arrayer, ger det ett mer flexibelt sätt att arbeta med en grupp av objekt.
I arrayer skulle du ha märkt att du måste definiera antalet element i en array i förväg. Detta måste göras när arrayen deklarerades.
Men i en samling behöver du inte definiera storleken på samlingen i förväg. Du kan lägga till element eller till och med ta bort element från samlingen när som helst. Det här kapitlet kommer att fokusera på hur vi kan arbeta med de olika samlingarna som finns tillgängliga i C#.
System. Collections Klasser
.NET Framework grupperar de ursprungliga icke-generiska samlingsklasserna i namnrymden System.Collections. Tabellen nedan sammanfattar de huvudtyper du kan använda direkt.
| Samling | BESKRIVNING |
| Arraylist | ArrayList-samlingen liknar Arrays datatyp i C#. Den största skillnaden är den dynamiska karaktären hos arraylistsamlingen. |
| Stack | Stacken är en specialfallssamling som representerar ett sist in, först ut (LIFO)-koncept. |
| köer | Kön är en specialkollektion som representerar ett först in, först ut-koncept. |
| Hastbar | En hashtabell är en speciell samling som används för att lagra nyckel-värde-objekt. |
| Sorterad lista | SortedList är en samling som lagrar nyckel-värdepar i stigande nyckelordning som standard. |
| BitArray | En bitarray är en matris av datastruktur som lagrar bitar. |
Generiska samlingar i C#
De icke-generiska klasserna ovan lagrar varje element som ett generellt objekt, vilket innebär att kompilatorn inte kan kontrollera typen och programmet betalar en liten kostnad för att boxa värden. För att lösa detta lade C# till namnrymden System.Collections.Generic, där varje samling är bunden till en deklarerad typ.
En generisk samling som List accepterar bara strängar, så misstag upptäcks vid kompileringstillfället och ingen konvertering behövs när du läser tillbaka ett objekt. Detta gör generiska samlingar säkrare, snabbare och lättare att läsa, vilket är anledningen till att de är standardvalet i modern C#-kod.
De vanligaste generiska samlingarna listas nedan:
- Lista : En anpassningsbar, indexbaserad lista, den generiska ersättningen för ArrayList.
- Ordbok : Lagrar nyckel-värde-par med snabba, hash-baserade sökningar.
- HashSet : Innehåller endast unika värden och stöder mängdoperationer som union.
- Kö : En först in, först ut-kollektion, den generiska versionen av Queue.
- Stack : En sist in, först ut-kollektion, den generiska versionen av Stack.
- Sorterad lista : Håller nyckel-värde-par sorterade efter nyckel i stigande ordning.
C# Listsamlingsexempel
Listan är den mest använda generiska samlingen eftersom den beter sig som en dynamisk array. Exemplet nedan skapar en lista med strängar, lägger till och tar bort objekt, läser dess storlek och skriver sedan ut de återstående värdena. All kod är skriven i Program.cs-filen.
Steg 1) Importera namnrymden System.Collections.Generic och deklarera en lista med strängar.
Steg 2) Lägg till objekt med metoden Lägg till och ta bort ett med metoden Ta bort.
Steg 3) Läs egenskapen Count och loopa sedan igenom listan med en foreach-sats.
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 Förklaring:-
- Namnrymden System.Collections.Generic importeras så att List-typen är tillgänglig för programmet.
- En ny lista kallade handledningar skapas och tre namn läggs till med Add-metoden.
- Metoden Ta bort tar bort värdet "Python”, vilket lämnar två punkter kvar i listan.
- Egenskapen Count returnerar antalet objekt, och foreach-slingan skriver ut varje återstående värde i ordning.
När programmet körs skriver det först ut antalet 2, Följt av Java och Kotlin på separata rader. Detta visar hur en samling ändrar sin storlek vid körning, något som en fast array inte kan göra.
Skillnaden mellan arrayer och samlingar i C#
Både en array och en samling grupperar relaterade objekt under ett namn, men de beter sig olika när programmet körs. Att veta när man ska använda varje namn hjälper dig att skriva renare och effektivare kod.
De viktigaste skillnaderna listas nedan:
- Storlek: En array har en fast längd som sätts vid deklarationen, medan en samling kan växa eller krympa när som helst.
- Typhantering: En array lagrar en enda typ, medan en samling kan vara typsäker med generiska typer eller innehålla objekt av blandade typer när de inte är generiska.
- Plats: Arrayer är inbyggda i språket, medan samlingsklasser finns i namnrymderna System.Collections och System.Collections.Generic.
- Inbyggda funktioner: Samlingar erbjuder färdiga metoder för att lägga till, ta bort, söka och sortera objekt, medan arrayer endast ger grundläggande indexerad åtkomst.
- Bästa användning: Välj en array när antalet objekt är känt och fast, och en samling när antalet ändras medan programmet körs.
Kort sagt, arrayer är bäst för data med fast storlek, medan samlingar ger den flexibilitet som de flesta verkliga applikationer behöver.

