0Pricing
C# Academy · Lezione

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

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

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

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

Espressioni 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,3

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

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

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

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

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

Verifica 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

  1. Sintassi delle espressioni di raccolta
  2. L'elemento spread
  3. Inferenza del tipo di destinazione per le raccolte
  4. Collection builder
← Torna a C# Academy