Spread-elementet
Kombinera samlingar med spread-operatorn.
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,6Blanda 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,5Lä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,40Sprida 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,eSprida 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,4Sprida 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,6Bygga 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); // 6Ordningen ä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,2Spridning 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)); // TrueSprida 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,4En 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().
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.