Składnia wyrażeń kolekcji
Jednolicie inicjalizuj tablice, listy i zakresy pamięci.
Składnia wyrażeń kolekcji to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.
Wyrażenia kolekcji (C# 12)
C# 12 wprowadza wyrażenia kolekcji: pojedynczą składnię z nawiasami kwadratowymi do tworzenia tablic, list, spanów i innych kolekcji. Zamiast new int[] { 1, 2, 3 } wystarczy napisać [1, 2, 3].
using System;
int[] numbers = [1, 2, 3, 4, 5];
Console.WriteLine(string.Join(",", numbers)); // 1,2,3,4,5Jedna składnia, wiele typów docelowych
Ten sam literał [...] działa niezależnie od tego, czy typem docelowym jest tablica, List<T> czy Span<T>. Kompilator wybiera właściwy sposób konstrukcji.
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);Puste kolekcje
Puste wyrażenie kolekcji to po prostu []. Jest czytelniejsze niż Array.Empty<T>() lub new List<T>() i automatycznie dopasowuje się do typu docelowego.
using System;
using System.Collections.Generic;
int[] empty = [];
List<string> names = [];
Console.WriteLine(empty.Length + " " + names.Count); // 0 0Zastępowanie rozwlekłych inicjalizatorów
Wyrażenia kolekcji usuwają zbędną składnię stosowaną w starych inicjalizatorach. Porównaj poniższe dwie formy.
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); // TrueKolekcje zagnieżdżone
Można zagnieżdżać wyrażenia kolekcji, aby tworzyć tablice postrzępione lub listy list.
using System;
int[][] grid = [[1, 2], [3, 4], [5, 6]];
Console.WriteLine(grid[1][0]); // 3Wyrażenia jako elementy
Elementem może być dowolne wyrażenie, w tym zmienna, wywołanie metody lub działanie arytmetyczne.
using System;
int x = 10;
int[] values = [x, x * 2, x + 5, Math.Abs(-3)];
Console.WriteLine(string.Join(",", values)); // 10,20,15,3Uwaga dotycząca tablic wielowymiarowych
Wyrażenia kolekcji tworzą postrzępione tablice (int[][]), a nie tablice prostokątne (int[,]). Tablice prostokątne nadal używają własnej składni.
using System;
int[][] jagged = [[1, 2, 3], [4, 5]];
Console.WriteLine(jagged[0].Length + " " + jagged[1].Length); // 3 2Praca ze Span
Ponieważ wyrażenia kolekcji mogą mieć typ docelowy Span<T> lub ReadOnlySpan<T>, kompilator może użyć alokacji na stosie, unikając tworzenia śmieci na stercie dla danych krótkotrwałych.
using System;
ReadOnlySpan<int> stackData = [1, 2, 3, 4];
int total = 0;
foreach (int n in stackData) total += n;
Console.WriteLine(total); // 10Przekazywanie kolekcji do metod
Gdy typ parametru jest typem kolekcji, można przekazać wyrażenie kolekcji bezpośrednio w miejscu wywołania.
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])); // 12Zalety czytelności
Wyrażenia kolekcji sprawdzają się szczególnie dobrze w kodzie operującym na dużych ilościach danych, na przykład w tabelach konfiguracji lub danych testowych, gdzie nawiasy pozwalają skupić uwagę na wartościach.
using System;
string[] days = ["Mon", "Tue", "Wed", "Thu", "Fri"];
Console.WriteLine(days[^1]); // FriZwracanie kolekcji
Metoda może zwracać wyrażenie kolekcji, a typ zwracany określa sposób jego utworzenia.
using System;
static int[] Primes() => [2, 3, 5, 7, 11];
Console.WriteLine(string.Join(",", Primes())); // 2,3,5,7,11Szybkie sprawdzenie
Sprawdź swoją znajomość podstaw wyrażeń kolekcji.
Podsumowanie
Poznałeś składnię wyrażeń kolekcji w języku C# 12.
[1, 2, 3]zastępuje rozwlekłe inicjalizatory.[]oznacza pustą kolekcję.- Wyrażenie jest typowane kontekstowo: działa z tablicami, listami i spanami.
- Zagnieżdżone nawiasy tworzą tablice postrzępione.
Często zadawane pytania
Czy lekcja „Składnia wyrażeń kolekcji” jest bezpłatna?
Tak — pełny tekst „Składnia wyrażeń kolekcji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Składnia wyrażeń kolekcji”?
Jednolicie inicjalizuj tablice, listy i zakresy pamięci. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C# Academy?
Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Składnia wyrażeń kolekcji”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?
Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Składnia wyrażeń kolekcji
- Element rozpakowywania
- Wnioskowanie typu docelowego kolekcji
- Konstruktory kolekcji