C# Academy · Lektion

Spread-elementet

Kombinera samlingar med spread-operatorn.

Lektion 2 av 413 steg

Spread-elementet är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C# Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C# Academy innehåller totalt 4 lektioner.

Spridningselementet ..

Inuti ett samlingsuttryck infogar spridningselementet .. innehållet i en annan samling. Det är så Ni kombinerar sekvenser deklarativt.

using System;

int[] a = [1, 2, 3];
int[] b = [4, 5, 6];
int[] all = [..a, ..b];
Console.WriteLine(string.Join(",", all)); // 1,2,3,4,5,6

Blanda spridningselement och enskilda element

Ni kan fritt blanda spridningselement med enskilda värden, och ordningen bevaras.

using System;

int[] middle = [2, 3, 4];
int[] result = [1, ..middle, 5];
Console.WriteLine(string.Join(",", result)); // 1,2,3,4,5

Lägga till först och sist

Med spridningselement blir det enkelt att lägga till något först eller sist. Resultatet blir en ny samling i stället för att den ursprungliga ändras.

using System;

int[] core = [10, 20, 30];
int[] withHead = [0, ..core];
int[] withTail = [..core, 40];
Console.WriteLine(string.Join(",", withHead)); // 0,10,20,30
Console.WriteLine(string.Join(",", withTail)); // 10,20,30,40

Sprida flera källor

Valfritt antal samlingar kan spridas in i en enda samling. På så sätt sammanfogas flera listor i ett uttryck.

using System;
using System.Collections.Generic;

List<string> x = ["a", "b"];
List<string> y = ["c"];
List<string> z = ["d", "e"];
List<string> merged = [..x, ..y, ..z];
Console.WriteLine(string.Join(",", merged)); // a,b,c,d,e

Sprida olika samlingstyper

Spridningskällan kan vara vilken enumerable som helst: en array till en lista, en lista till en array och så vidare. Måltypen styr resultatet.

using System;
using System.Collections.Generic;

int[] arr = [1, 2];
List<int> list = [3, 4];
int[] combined = [..arr, ..list];
Console.WriteLine(string.Join(",", combined)); // 1,2,3,4

Sprida IEnumerable

Även lata sekvenser från LINQ kan spridas; de räknas upp när den nya samlingen skapas.

using System;
using System.Linq;

var evens = Enumerable.Range(1, 6).Where(n => n % 2 == 0);
int[] result = [0, ..evens];
Console.WriteLine(string.Join(",", result)); // 0,2,4,6

Bygga upp samlingar

Spridningselement passar utmärkt för stegvis uppbyggnad utan imperativa anrop till Add.

using System;

int[] baseline = [1, 2, 3];
int[] extra = [4, 5];
int[] full = [..baseline, ..extra, 6];
Console.WriteLine(full.Length); // 6

Ordningen är viktig

Den resulterande sekvensen följer den textuella ordningen för element och spridningselement, så om Ni byter plats på spridningselementen ändras resultatet.

using System;

int[] a = [1, 2];
int[] b = [3, 4];
Console.WriteLine(string.Join(",", [..a, ..b])); // 1,2,3,4
Console.WriteLine(string.Join(",", [..b, ..a])); // 3,4,1,2

Spridning jämfört med Concat

Spridning ersätter ofta Concat + ToArray. Koden blir tydligare och kompilatorn kan dimensionera resultatet effektivt.

using System;
using System.Linq;

int[] a = [1, 2];
int[] b = [3, 4];
// old
int[] oldWay = a.Concat(b).ToArray();
// new
int[] newWay = [..a, ..b];
Console.WriteLine(oldWay.SequenceEqual(newWay)); // True

Sprida till span

Eftersom måltypen kan vara en span kan Ni kombinera data med möjlig stackallokering i prestandakänsliga kodvägar.

using System;

ReadOnlySpan<int> head = [1, 2];
ReadOnlySpan<int> tail = [3, 4];
int[] joined = [..head, ..tail];
Console.WriteLine(string.Join(",", joined)); // 1,2,3,4

En praktisk sammanslagning

Här slår vi samman standardinställningar med åsidosättningar i ett enda uttryck, så att senare värden behåller sin plats efter standardvärdena.

using System;

string[] defaults = ["--verbose", "--color"];
string[] userArgs = ["--output=log.txt"];
string[] finalArgs = [..defaults, ..userArgs];
Console.WriteLine(string.Join(" ", finalArgs));

Snabb kontroll

Kontrollera Er förståelse av spridningselementet.

Sammanfattning

Ni har lärt Er använda spridningselementet .. i samlingsuttryck.

  • [..a, ..b] sammanfogar samlingar.
  • Spridningselement kan blandas med enskilda element och bevarar ordningen.
  • Källorna kan vara arrayer, listor, span eller valfri IEnumerable.
  • Det är ett tydligare alternativ till Concat().ToArray().
Gratis att börja

Lär dig C# med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
93
Lektioner
346

Vanliga frågor

Är lektionen ”Spread-elementet” gratis?

Ja – hela texten till ”Spread-elementet” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C# Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C# Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Spread-elementet”?

Kombinera samlingar med spread-operatorn. Ni övar på C# Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig C# Academy?

Du behöver inga förkunskaper. Utbildningen i C# Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Spread-elementet”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här C# Academy-lektionen?

Ja. Varje C# Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Syntax för samlingsuttryck
  2. Spread-elementet
  3. Målinferens för samlingar
  4. Samlingsbyggare
← Tillbaka till C# Academy