Che cosa è l'uso di “??” [duplicato]
Domanda
Eventuali duplicati:
Qual è il “??” operatore per?
Si prega di spiegare a me che cosa è l'uso di "??" in seguito il codice e ciò che è "??" usato per.
if ((this.OrderDate ?? DateTime.MinValue) > DateTime.Today)
{ e.Description = "data dell'ordine non deve essere in futuro."; return false; }
il codice di cui sopra è a http://nettiers.com/EntityLayer.ashx
Grazie.
Soluzione
(Questo è un duplicato, ma è difficile per cercare, quindi sono abbastanza felice di fornire più un altro obiettivo per le ricerche future ...)
E 'il null coalescenza operatore . Essenzialmente valuta il primo operando, e se il risultato è nullo (sia un riferimento nullo o il valore nullo per un tipo di valore nullable), allora valuta il secondo operando. Il risultato è a seconda di quale è stata valutata operando scorso, in modo efficace.
Si noti che a causa della sua associatività, è possibile scrivere:
int? x = E1 ?? E2 ?? E3 ?? E4;
se E1
, E2
, E3
e E4
sono tutte espressioni di tipo int?
-. Inizierà con E1
e progredire fino a quando non trova un valore non nullo
Il primo operando deve essere un tipo nullable, ma e secondo operando può essere non annullabile, nel qual caso il tipo di espressione generale è non nullable. Ad esempio, supponiamo E4 è un'espressione di tipo int
(ma tutto il resto sono ancora int?
allora si può fare x
non annullabile:
int x = E1 ?? E2 ?? E3 ?? E4;