loading experience

C#

Collection expressions in C#: una sintassi per tutte le collezioni

Array, liste, span e set si creano allo stesso modo con le parentesi quadre e l'operatore di spread.

Collection expressions in C#: una sintassi per tutte le collezioni

Le collection expressions unificano la creazione delle collezioni: la stessa sintassi tra parentesi quadre funziona per array, List<T>, Span<T>, HashSet<T> e molti altri tipi.

Il compilatore sceglie il modo migliore per costruire ogni collezione.
Il compilatore sceglie il modo migliore per costruire ogni collezione.

Sintassi di base

int[] numeri = [1, 2, 3];
List<string> nomi = ["Anna", "Luca"];
HashSet<char> vocali = ['a', 'e', 'i', 'o', 'u'];
ReadOnlySpan<byte> intestazione = [0x50, 0x4B, 0x03, 0x04];
List<int> vuota = [];

Il compilatore sceglie il modo più efficiente di costruire ogni tipo: per esempio uno span di costanti può puntare direttamente ai dati del programma senza allocare.

L'operatore spread

Con .. si inseriscono tutti gli elementi di un'altra collezione:

string[] base_ = ["lettura"];
string[] admin = [.. base_, "scrittura", "eliminazione"];

IEnumerable<int> Pari(int max) => [.. Enumerable.Range(0, max).Where(n => n % 2 == 0)];

Nelle firme dei metodi

Le collection expressions funzionano ovunque il tipo di destinazione sia noto, anche come argomenti:

void Notifica(IReadOnlyList<string> destinatari) { /* ... */ }

Notifica(["info@azienda.it", "supporto@azienda.it"]);

Perché adottarle

  • Codice uniforme: cambiare il tipo della collezione non richiede di riscrivere l'inizializzazione.
  • Prestazioni: il compilatore ottimizza la costruzione per ogni tipo.
  • Leggibilità: lo spread sostituisce molte chiamate a Concat e AddRange.
Commenti (0)

Nessun commento ancora.

Lascia un commento