AntonioPelleriti.it [aka z9]

I code, therefore I am

NAVIGATION - SEARCH

L'operatore di Null Coalescing in C#

L'operatore ?? è detto operatore di null coalescing, ed è molto utile in una serie di situazioni permettendo di scrivere codice più elegante e ristretto in C#.

Quante volte vi è capitato di dover scrivere un blocco if per controllare se una variabile è null, ed agire di conseguenza scegliendo un valore di default da assegnare alla stessa variabile? Ecco un esempio:

string name;
if(str!=null)
{
 name=str;
}
else name="senza nome";

 

Probabilmente starete pensando: "beh c'è sempre l'operatore ternario!", ed in effetti un altro modo di scrivere lo stesso blocco di codice può essere il seguente:

string name= (str!=null) ? str: "senza titolo";

Ma l'operatore di null coalescing, introdotto già con le specifiche 2.0 ma spesso ignorato da chi si avvicina al mondo della programmazione in C#, consente di essere ancora più concisi.

Esso verifica se l'operando a sinistra è diverso da null, ed in tal caso restituisce il valore dell'operando sinistro stesso. In caso contrario invece restituisce l'operando destro:

string name= str ?? "senza titolo";

L'operatore funziona anche con tipi valore, per esempio nel caso seguente, se il valore della variabile nullableInt è null, viene assegnato alla variabile i il valore 1:

int? nullableInt=null;
int i= nullableInt ?? 1; // i vale 1

 

Se invece nullableInt possiede un valore, esso viene assegnato alla variabile:

int? nullableInt=123;
int i= nullableInt ?? 1;  // i vale ora 123