Qual è il risultato se tutti i parametri in un'operazione di nulla coalescenza sono nulli?

StackOverflow https://stackoverflow.com/questions/3971208

  •  09-10-2019
  •  | 
  •  

Domanda

Quando questo finiture di codice, quello che è il risultato di myObject?

object myObject = "something";
object yourObject = null;

myObject = null ?? yourObject;
È stato utile?

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.

  
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top