Syntax för samlingsuttryck
Initiera arrayer, listor och spans på ett enhetligt sätt.
Syntax för samlingsuttryck är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 1 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.
Samlingsuttryck (C# 12)
C# 12 introducerar samlingsuttryck: en enda syntax med hakparenteser för att skapa arrayer, listor, spans med mera. I stället för new int[] { 1, 2, 3 } skriver du helt enkelt [1, 2, 3].
using System;
int[] numbers = [1, 2, 3, 4, 5];
Console.WriteLine(string.Join(",", numbers)); // 1,2,3,4,5En syntax, många mål
Samma literal [...] fungerar oavsett om målet är en array, en List<T> eller en Span<T>. Kompilatorn väljer rätt konstruktion.
using System;
using System.Collections.Generic;
int[] arr = [1, 2, 3];
List<int> list = [4, 5, 6];
Span<int> span = [7, 8, 9];
Console.WriteLine(arr.Length + " " + list.Count + " " + span.Length);Tomma samlingar
Ett tomt samlingsuttryck är helt enkelt []. Det är tydligare än Array.Empty<T>() eller new List<T>() och måltypas automatiskt.
using System;
using System.Collections.Generic;
int[] empty = [];
List<string> names = [];
Console.WriteLine(empty.Length + " " + names.Count); // 0 0Ersätta utförliga initierare
Samlingsuttryck tar bort omständligheten i den gamla initierarsyntaxen. Jämför de två formerna nedan.
using System;
using System.Collections.Generic;
// old
List<int> oldWay = new List<int> { 1, 2, 3 };
// new
List<int> newWay = [1, 2, 3];
Console.WriteLine(oldWay.Count == newWay.Count); // TrueNästlade samlingar
Ni kan nästla samlingsuttryck för att skapa jagged-arrayer eller listor med listor.
using System;
int[][] grid = [[1, 2], [3, 4], [5, 6]];
Console.WriteLine(grid[1][0]); // 3Uttryck som element
Element kan vara vilket uttryck som helst, inklusive variabler, metodanrop och aritmetik.
using System;
int x = 10;
int[] values = [x, x * 2, x + 5, Math.Abs(-3)];
Console.WriteLine(string.Join(",", values)); // 10,20,15,3Anmärkning om flerdimensionella arrayer
Samlingsuttryck skapar jagged-arrayer (int[][]), inte rektangulära arrayer (int[,]). Rektangulära arrayer använder fortfarande sin egen syntax.
using System;
int[][] jagged = [[1, 2, 3], [4, 5]];
Console.WriteLine(jagged[0].Length + " " + jagged[1].Length); // 3 2Arbeta med Span
Eftersom samlingsuttryck kan måltypas till Span<T> och ReadOnlySpan<T> kan kompilatorn använda stackallokering och därmed undvika skräp på heapen för kortlivade data.
using System;
ReadOnlySpan<int> stackData = [1, 2, 3, 4];
int total = 0;
foreach (int n in stackData) total += n;
Console.WriteLine(total); // 10Skicka samlingar till metoder
När en parameter har en samlingstyp kan Ni skicka ett samlingsuttryck direkt vid anropet.
using System;
static int Sum(int[] xs) {
int t = 0;
foreach (int x in xs) t += x;
return t;
}
Console.WriteLine(Sum([2, 4, 6])); // 12Fördelar för läsbarheten
Samlingsuttryck kommer verkligen till sin rätt i datatät kod, till exempel konfigurationstabeller eller testdata, där hakparenteserna låter värdena stå i centrum.
using System;
string[] days = ["Mon", "Tue", "Wed", "Thu", "Fri"];
Console.WriteLine(days[^1]); // FriReturnera samlingar
En metod kan returnera ett samlingsuttryck, där returtypen styr hur det skapas.
using System;
static int[] Primes() => [2, 3, 5, 7, 11];
Console.WriteLine(string.Join(",", Primes())); // 2,3,5,7,11Snabb kontroll
Kontrollera Er förståelse av grunderna i samlingsuttryck.
Sammanfattning
Ni har lärt Er syntaxen för samlingsuttryck i C# 12.
[1, 2, 3]ersätter utförliga initierare.[]är en tom samling.- Uttrycket måltypas: arrayer, listor och span fungerar alla.
- Nästlade hakparenteser skapar jagged-arrayer.
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 ”Syntax för samlingsuttryck” gratis?
Ja – hela texten till ”Syntax för samlingsuttryck” 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 ”Syntax för samlingsuttryck”?
Initiera arrayer, listor och spans på ett enhetligt sätt. 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 1 av 4.
Hur lång tid tar lektionen ”Syntax för samlingsuttryck”?
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
- Syntax för samlingsuttryck
- Spread-elementet
- Målinferens för samlingar
- Samlingsbyggare