Qual è il risultato se tutti i parametri in un'operazione di nulla coalescenza sono nulli?
-
09-10-2019 - |
Domanda
Quando questo finiture di codice, quello che è il risultato di myObject
?
object myObject = "something";
object yourObject = null;
myObject = null ?? yourObject;
Soluzione
myObject sarà nullo
Questo si traduce a -
if (null == null)
myObject = yourObject;
else
myObject = null;
Altri suggerimenti
L'operatore si fondono si traduce in questo modo:
x ?? y
x != null ? x : y
Quindi quello che hai:
myObject = null != null ? null : yourObject;
che è in realtà abbastanza inutile dal momento che nulla sarà sempre nullo.
Solo per i calci, ecco un piccolo tavolo:
A ?? B -> R --------------------- a ?? any -> a; where a is not-null null ?? b -> b; for any b null ?? null -> null; implied from previous
E poiché ??
è solo un operatore infisso destra-associata, x ?? y ?? z
(sorpresa!) -> x ?? (y ?? z)
. Come &&
e ||
, ??
è anche un'operazione di corto circuito.
... da ?? Operatore (Riferimenti per C #) :
(??) restituisce la mano sinistra operando se non è nullo; altrimenti restituisce l'operando a destra.
... dal C # 3.0 di riferimento Lingua:
A nullo coalescenza espressione della forma a ?? b richiede di essere di un tipo o di riferimento di tipo nullable. Se a è non nullo, il risultato di un ?? b è un; altrimenti, il risultato è b. I Esamina Operazione B solo se è nullo.