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.

War es hilfreich?

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top