loading experience

C#

C# 14: assegnazione null-condizionale con ?.

L'operatore ?. ora funziona anche a sinistra dell'uguale: meno if, stesso comportamento sicuro.

C# 14: assegnazione null-condizionale con ?.

L'operatore ?. permette da anni di leggere un membro solo se l'oggetto non è null. Con C# 14 si può usare anche per assegnare: l'assegnazione avviene solo se l'oggetto esiste.

Se il ricevitore è null, la parte destra non viene nemmeno valutata.
Se il ricevitore è null, la parte destra non viene nemmeno valutata.

Un esempio

// Prima
if (customer is not null)
{
    customer.LastOrder = order;
}

// Con C# 14
customer?.LastOrder = order;

Se customer è null, l'espressione a destra non viene valutata. È un dettaglio importante: se a destra c'è una chiamata costosa o con effetti collaterali, non verrà eseguita inutilmente.

Funziona anche con indici e operatori composti

settings?["theme"] = "dark";
counters?.Total += 1;

Sono ammessi gli operatori di assegnazione composta come += e -=; non sono invece ammessi incremento e decremento (++ e --).

Quando usarla

  • Per aggiornare oggetti facoltativi, come un contesto o una configurazione che può mancare.
  • Nei gestori di eventi e nei callback, dove l'oggetto potrebbe essere già stato rilasciato.

Non sostituisce una buona progettazione dei tipi: se un valore non dovrebbe mai essere null, è meglio dichiararlo non nullable e lasciare che il compilatore ti aiuti.

Commenti (0)

Nessun commento ancora.

Lascia un commento