?? Operatore (Riferimenti per C#)
L'operatore ?? viene chiamato operatore null-coalescing. Restituisce l'operando sinistro se non è Null. In caso contrario, restituisce l'operando destro.
Note
Un tipo nullable può rappresentare un valore dal dominio del tipo oppure il valore può essere indefinito, nel qual caso è Null. È possibile utilizzare l'espressività sintattica dell'operatore ?? per restituire un valore appropriato (l'operando destro) quando l'operando sinistro è un tipo nullable il cui valore è Null. Se si tenta di assegnare un tipo di valore nullable a un tipo non nullable senza utilizzare l'operatore ??, verrà generato un errore in fase di compilazione. Se si utilizza un cast e il tipo di valore nullable non è attualmente definito, verrà generata un'eccezione InvalidOperationException.
Per ulteriori informazioni, vedere Tipi nullable (Guida per programmatori C#).
Il risultato di un operatore ?? non è considerato una costante anche se entrambi gli argomenti sono costanti.
Esempio
class NullCoalesce
{
static int? GetNullableInt()
{
return null;
}
static string GetStringValue()
{
return null;
}
static void Main()
{
int? x = null;
// Set y to the value of x if x is NOT null; otherwise,
// if x = null, set y to -1.
int y = x ?? -1;
// Assign i to return value of the method if the method's result
// is NOT null; otherwise, if the result is null, set i to the
// default value of int.
int i = GetNullableInt() ?? default(int);
string s = GetStringValue();
// Display the value of s if s is NOT null; otherwise,
// display the string "Unspecified".
Console.WriteLine(s ?? "Unspecified");
}
}
Vedere anche
Riferimenti
Tipi nullable (Guida per programmatori C#)