C# Academy · Lektion

Iterér over samlinger

Lister, arrays og dictionaries.

Lektion 2 af 413 trin

Iterér over samlinger er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 4 lektioner i alt.

Samlinger, du kan gennemløbe

Mange C#-typer kan gennemløbes med foreach: arrays, List<T>, ordbøger og meget mere.

De understøtter alle gennemløb, fordi de implementerer en fælles grænseflade. Du behøver ikke kende detaljerne for at bruge dem.

Gennemløb af et array

Arrays har en fast størrelse, som angives, når de oprettes.

Du kan gennemløbe et array med enhver elementtype på samme måde.

double[] prices = { 9.99, 4.50, 19.00 };
foreach (var p in prices)
{
    Console.WriteLine(p);
}

Gennemløb af en liste

En List<T> kan vokse og blive mindre. Det er en af de mest almindelige samlinger.

Det ser præcis ud som at gennemløbe et array.

var fruits = new List<string> { "apple", "pear" };
foreach (var f in fruits)
{
    Console.WriteLine(f);
}

Tælling under gennemløb

Nogle gange vil du have en manuel tæller inde i foreach.

Deklarer en variabel før løkken, og øg den ved hver gennemløb.

var items = new List<string> { "a", "b", "c" };
int i = 0;
foreach (var item in items)
{
    Console.WriteLine(i + ": " + item);
    i++;
}

Gennemløb af en ordbog

En Dictionary<K,V> gemmer nøgle-værdi-par.

Når du gennemløber den, får du en KeyValuePair med .Key og .Value.

var ages = new Dictionary<string, int>
{
    ["Ada"] = 36,
    ["Linus"] = 54
};
foreach (var pair in ages)
{
    Console.WriteLine(pair.Key + "=" + pair.Value);
}

Ordbogens nøgler og værdier

Hvis du kun har brug for nøglerne eller kun værdierne, skal du bruge egenskaberne .Keys eller .Values.

Hver af dem er selv en samling, som du kan gennemløbe.

foreach (var name in ages.Keys)
{
    Console.WriteLine(name);
}

Gennemløb af et HashSet

Et HashSet<T> gemmer unikke værdier. Dubletter ignoreres.

Du kan gennemløbe det med foreach, men rækkefølgen er ikke garanteret.

var tags = new HashSet<string> { "c#", "dotnet", "c#" };
foreach (var t in tags)
{
    Console.WriteLine(t);
}

Indlejret gennemløb

Du kan placere en foreach-løkke inde i en anden for at gennemløbe en samling af samlinger.

Dette gennemløber hver række og derefter hver værdi i den pågældende række.

int[][] grid = { new[] {1, 2}, new[] {3, 4} };
foreach (var row in grid)
{
    foreach (var v in row)
    {
        Console.WriteLine(v);
    }
}

Oprettelse af et resultat

Et almindeligt mønster er at gennemløbe én samling og føje omdannede elementer til en anden.

Her fordobler vi hvert tal og gemmer resultatet i en ny liste.

var nums = new List<int> { 1, 2, 3 };
var doubled = new List<int>();
foreach (var n in nums)
{
    doubled.Add(n * 2);
}
Console.WriteLine(string.Join(",", doubled));

Tomme samlinger

Hvis en samling ikke har nogen elementer, bliver foreach-blokken ganske enkelt aldrig kørt.

Der opstår ingen fejl. Derfor er foreach sikkert, selv når en liste kan være tom.

var empty = new List<int>();
foreach (var x in empty)
{
    Console.WriteLine("never printed");
}
Console.WriteLine("done");

IEnumerable: Den fælles tråd

Alle samlinger, der kan gennemløbes, implementerer IEnumerable<T>.

Det er den kontrakt, som foreach bygger på. Takket være den fungerer den samme løkkesyntaks på tværs af arrays, lister, mængder og ordbøger.

Hurtig test

Test din forståelse af, hvordan samlinger gennemløbes.

Opsummering

Du har set, hvordan foreach fungerer på tværs af arrays, lister, ordbøger og mængder.

De deler kontrakten IEnumerable<T>, så én løkkestil passer til dem alle. Tomme samlinger er sikre, og ordbøger giver nøgle-værdi-par.

Gratis at komme i gang

Lær C# med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
93
Lektioner
346

Ofte stillede spørgsmål

Er lektionen “Iterér over samlinger” gratis?

Ja — hele teksten til “Iterér over samlinger” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Iterér over samlinger”?

Lister, arrays og dictionaries. Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C# Academy?

Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Iterér over samlinger”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C# Academy-lektion?

Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. foreach-løkken
  2. Iterér over samlinger
  3. break og continue
  4. Almindelige iterationsfejl
← Tilbage til C# Academy