0Pricing
C# Academy · Lekcja

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,5

Jedna 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 0

Zastę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); // True

Kolekcje 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]); // 3

Wyraż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,3

Uwaga 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 2

Praca 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); // 10

Przekazywanie 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])); // 12

Zalety 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]); // Fri

Zwracanie 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,11

Szybkie 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

  1. Składnia wyrażeń kolekcji
  2. Element rozpakowywania
  3. Wnioskowanie typu docelowego kolekcji
  4. Konstruktory kolekcji
← Powrót do C# Academy