Come sempre, le specifiche C# è il miglior posto dove andare per questo genere di cose.
Dalla sezione 7.13 del C# 5 specification (sottolineatura mia):
Un nullo coalescenza espressione della forma a ?? b
richiede a
essere di un tipo nullable o tipo di riferimento. Se a
non è nullo, il risultato di a ?? b
è a
; in caso contrario, il risultato è b
. L'operazione valuta b
solo se a
è nullo.
Ci sono più dettagli su quando vengono eseguite le conversioni e il comportamento esatto, ma questo è il punto principale della domanda. Vale anche la pena notare che l'operatore con coalizione nulla ha ragione-associativa, quindi a ?? b ?? c
viene valutato come a ?? (b ?? c)
... il che significa che valuterà solo c
se siaa
e sono nulli.
fonte
2014-09-24 19:01:30
Provalo: 'string s =" A "; Console.WriteLine ("Hello" ?? a.Substring (10)); ' – phoog