(Dies ist ein Duplikat, aber es ist schwer zu suchen, also bin ich glücklich genug, um mehr ein neues Ziel für zukünftige Suchen zu schaffen ...)
Es ist die null-coalescing operator. Im Wesentlichen wertet es den ersten Operanden aus, und wenn das Ergebnis Null ist (entweder eine Nullreferenz oder der Nullwert für einen Nullwerttyp), wertet es den zweiten Operanden aus. Das Ergebnis ist effektiv, welcher Operand zuletzt ausgewertet wurde.
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?
- mit E1
und Fortschritt beginnen wird, bis es einen nicht findet Nullwert
Der erste Operand muss ein NULL-fähiger Typ sein, aber der zweite Operand darf nicht NULL-zulässig sein. In diesem Fall ist der gesamte Ausdruckstyp nicht NULL-zulässig. Angenommen, E4 ein Ausdruck des Typs ist int
(aber der ganze Rest sind noch int?
dann können Sie x
nicht-nullable machen:
int x = E1 ?? E2 ?? E3 ?? E4;
'' ?? als solche könnte zu suchen hart sein, aber die Suche nach "C# -Syntax" oder "C# -Operatoren" bringt Sie ziemlich schnell zu den Antworten. –