Listor och arrayer
Både listor och arrayer är samlingar, som (förenklat) låter oss lagra flera värden av samma datatyp på samma ställe. Man kan till exempel ha en samling av en massa int-värden som är samlade på samma ställe, eller en samling strings.
Arrayer kom först, är snabba och effektiva, men kan inte växa/krympa – de har ett fast antal platser.
Listor är en senare uppfinning. De är mer flexibla och nästan lika snabba. De är en generisk klass och de kan växa/krympa.
Indexering
Alla föremål som lagrats i en samling ges normalt ett index, som beskriver föremålets position i samlingen och låter oss komma åt det.
I arrayer och listor är index alltid en siffra – en integer. Det första föremålet i listan har index 0, det andra har index 1, etc.
För att hänvisa till ett index räknat från slutet av arrayen så skriver man ^ framför siffran.
List
När listor skapas har de normalt sett en längd på 0, och de växer dynamiskt när man lägger till saker i dem.
Mer information om List finns under Generiska klasser.
Add()
Metod som är inbyggd i listor. Används för att lägga till nya föremål i listan.
Count
Variabel som är inbyggd i listor. Har alltid ett värde som är lika med listans storlek.
Remove()
Metod som är inbyggd i listor. Används för att ta bort föremål från listan.
RemoveAt()
Metod som är inbyggd i listor. Används för att ta bort föremål på en specifik plats i listan.
RemoveAll()
Metod för att ta bort alla föremål som matchar ett visst kriterium. Kriteriet skrivs som en metod. Metoden tar emot ett värde av samma datatyp som listan innehåller, och returnerar true om kriteriet är uppfyllt och false om det inte är det. Här används med andra ord delegates.
Ett annat sätt är att använda ett lambda-uttryck:
Att göra om en lista till en array
Att göra om en array till en lista
Array
Arrayer har en fast längd som bestäms när arrayen skapas.
Length
Variabel som är inbyggd i arrayer. Har alltid ett värde som är lika med arrayens storlek.
Contains()
Ett snabbt sätt att se ifall en sak finns i arrayen.
OBSERVERA: Contains är en del av biblioteket Linq, så du behöver skriva detta längst upp bland dina andra using-statements:
using System.Linq;
Range
För att få ut en del av en array som en ny array kan man använda ranges.
Ranges anger man genom att skriva ..
(två punkter). Innan punkten skriver man start-index, alltså den sak i arrayen man vill att den nya arrayen ska börja på. Efter punkterna skriver man slut-index. Den nya arrayen inkluderar inte den sak som finns på slut-index.
Detta kallas ibland också "slicing", eftersom man delar upp arrayen i mindre bitar.
Att göra om en array till en lista
Flerdimensionella arrayer
En vanlig array är endimensionell – en lista, eller en serie. Varje sak i arrayen identifieras av ett index.
En tvådimensionell array är som ett rutnät eller en tabell. Varje sak i arrayen identifieras av två index.
GetLength
För att läsa av en flerdimensionell arrays längd i någon dimension, använd GetLength.
Skapa i äldre versioner (innan .net 8)
Innan C# 12, som ingår i dotnet 8, kunde man inte skapa nya arrayer eller listor via "collection expressions", alltså de enkla hakparenteserna.
Istället var man tvungen att använda måsvingar för arrayer, och new() för List.
Last updated