Was ist die Verwendung von „??“ [Duplikat]
Frage
Mögliche Duplizieren:
Was ist der „??“ Operator?
Bitte erklären Sie mir, was die Verwendung von ist „??“ in folgendem Code und was ist „??“ verwendet für.
if ((this.OrderDate ?? DateTime.MinValue) > DateTime.Today)
{ e.Description = „Bestelldatum darf nicht in der Zukunft sein.“; falsch zurückgeben; }
Der obige Code ist unter http://nettiers.com/EntityLayer.ashx
Danke.
Lösung
(Dies ist ein Duplikat, aber es ist schwer zu suchen, so dass ich glücklich genug bin mehr ein neues Ziel für zukünftige Suchen zu schaffen ...)
Es ist die null-koaleszierenden Operator . Im Wesentlichen wertet sie die ersten Operanden, und wenn das Ergebnis (eine Nullreferenz oder der Nullwert für einen nullable Werttyp entweder) null ist, dann wertet er den zweiten Operanden. Das Ergebnis ist, je nachdem, welcher Operanden wurde zuletzt ausgewertet, wirksam.
Beachten Sie, dass aufgrund seiner Assoziativität, können Sie schreiben:
int? x = E1 ?? E2 ?? E3 ?? E4;
Wenn E1
, E2
, E3
und E4
sind alle Ausdrücke vom Typ int?
-. Es mit E1
beginnen und fortschreiten, bis sie einen Nicht-Nullwert findet
Der erste Operand hat ein NULL festlegbaren Typ sein, aber e zweite Operand kann NULL-sein, in welchem ??Fall der Gesamtexpressionstyp ist nicht-Nullwerte enthalten. Angenommen, E4 ein Ausdruck des Typs int
ist (aber der ganze Rest sind int?
noch, dann können Sie x
nicht-nullable machen:
int x = E1 ?? E2 ?? E3 ?? E4;