Sintassi delle espressioni di raccolta
Inizializzi array, liste e span in modo uniforme.
Sintassi delle espressioni di raccolta è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Espressioni di raccolta (C# 12)
C# 12 introduce le espressioni di raccolta: una singola sintassi con parentesi quadre per creare array, liste, span e altro. Invece di new int[] { 1, 2, 3 } può semplicemente scrivere [1, 2, 3].
using System;
int[] numbers = [1, 2, 3, 4, 5];
Console.WriteLine(string.Join(",", numbers)); // 1,2,3,4,5Una sintassi, molte destinazioni
Lo stesso valore letterale [...] funziona sia quando la destinazione è un array, sia quando è un List<T> o uno Span<T>. Il compilatore sceglie la costruzione appropriata.
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);Raccolte vuote
Un'espressione di raccolta vuota è semplicemente []. È più chiara di Array.Empty<T>() o new List<T>() e viene tipizzata automaticamente in base al tipo di destinazione.
using System;
using System.Collections.Generic;
int[] empty = [];
List<string> names = [];
Console.WriteLine(empty.Length + " " + names.Count); // 0 0Sostituire gli inizializzatori verbosi
Le espressioni di raccolta eliminano la verbosità della vecchia sintassi degli inizializzatori. Confronti le due forme riportate di seguito.
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); // TrueRaccolte annidate
È possibile annidare le espressioni di raccolta per creare array frastagliati o liste di liste.
using System;
int[][] grid = [[1, 2], [3, 4], [5, 6]];
Console.WriteLine(grid[1][0]); // 3Espressioni come elementi
Gli elementi possono essere espressioni qualsiasi, incluse variabili, chiamate di metodi ed espressioni aritmetiche.
using System;
int x = 10;
int[] values = [x, x * 2, x + 5, Math.Abs(-3)];
Console.WriteLine(string.Join(",", values)); // 10,20,15,3Nota sulle dimensioni multiple
Le espressioni di raccolta creano array frastagliati (int[][]), non array rettangolari (int[,]). Gli array rettangolari usano ancora la propria sintassi.
using System;
int[][] jagged = [[1, 2, 3], [4, 5]];
Console.WriteLine(jagged[0].Length + " " + jagged[1].Length); // 3 2Lavorare con Span
Poiché le espressioni di raccolta possono avere come destinazione Span<T> e ReadOnlySpan<T>, il compilatore può usare l'allocazione nello stack, evitando allocazioni inutili nell'heap per i dati di breve durata.
using System;
ReadOnlySpan<int> stackData = [1, 2, 3, 4];
int total = 0;
foreach (int n in stackData) total += n;
Console.WriteLine(total); // 10Passare raccolte ai metodi
Quando il tipo di un parametro è una raccolta, è possibile passare direttamente un'espressione di raccolta nel punto della chiamata.
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])); // 12Vantaggi in termini di leggibilità
Le espressioni di raccolta sono particolarmente efficaci nel codice incentrato sui dati, ad esempio nelle tabelle di configurazione o nei fixture di test, dove le parentesi mantengono l'attenzione sui valori.
using System;
string[] days = ["Mon", "Tue", "Wed", "Thu", "Fri"];
Console.WriteLine(days[^1]); // FriRestituire raccolte
Un metodo può restituire un'espressione di raccolta, lasciando che sia il tipo restituito a determinarne la costruzione.
using System;
static int[] Primes() => [2, 3, 5, 7, 11];
Console.WriteLine(string.Join(",", Primes())); // 2,3,5,7,11Verifica rapida
Verifichi la Sua comprensione delle nozioni di base sulle espressioni di raccolta.
Riepilogo
Ha appreso la sintassi delle espressioni di raccolta introdotta in C# 12.
[1, 2, 3]sostituisce gli inizializzatori verbosi.[]rappresenta una raccolta vuota.- La sintassi è tipizzata in base al tipo di destinazione: funzionano array, liste e span.
- Le parentesi annidate creano array frastagliati.
Domande Frequenti
La lezione «Sintassi delle espressioni di raccolta» è gratuita?
Sì — il testo completo di «Sintassi delle espressioni di raccolta» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Sintassi delle espressioni di raccolta»?
Inizializzi array, liste e span in modo uniforme. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Sintassi delle espressioni di raccolta»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Sintassi delle espressioni di raccolta
- L'elemento spread
- Inferenza del tipo di destinazione per le raccolte
- Collection builder