Nun, es bin nicht ganz dasselbe wie die conditional operator, aber ich denke, Sie denken an den null coalescing operator (??). (Ich denke, Sie sagten, es sei "ähnlich" :) Beachten Sie, dass "ternary" nur auf die Anzahl der Operanden des Operators bezieht - also, während der bedingte Operator ein ternärer Operator ist, ist der Koaleszenzoperator Null ein binärer Operator.
Es dauert im Großen und Ganzen diese Form:
result = first ?? second;
Hier second
wird nur ausgewertet werden, wenn first
null ist. Es muss nicht das Ziel einer Zuweisung sein - Sie könnten es beispielsweise verwenden, um ein Methodenargument auszuwerten.
Beachten Sie, dass der erste Operand nullfähig sein kann - aber die zweite nicht. Obwohl es einige spezifische Details zu Konvertierungen gibt, ist der Typ des Gesamtausdrucks im einfachen Fall der Typ des zweiten Operanden. Durch die Assoziativität können Sie Anwendungen des Betreibers Stack ordentlich zu:
int? x = GetValueForX();
int? y = GetValueForY();
int z = GetValueForZ();
int result = x ?? y ?? z;
Beachten Sie, wie x
und y
nullable, aber z
und result
nicht. Natürlich z
könnte nullable sein, aber dann result
müsste auch Nullable sein.
Grundsätzlich werden die Operanden in der Reihenfolge ausgewertet, in der sie im Code erscheinen. Die Auswertung wird angehalten, wenn ein Wert ungleich Null gefunden wird.
Oh, und obwohl das oben in Bezug auf Werttypen gezeigt wird, funktioniert es auch mit Referenztypen (die sind immer Nullable).
Mögliches Duplikat -> http: // stackoverflow.com/questions/463155/how-do-the-ternary-Operator-Arbeit –
@Junior, aber das ist über den ternären Operator, während es sich um den Koaleszenz-Operator (trotz des Titels) – Rup
@Junior, während der Titel meiner Frage ist ein etwas irreführend, wenn Sie meine Frage lesen, werden Sie sehen, dass es nichts mit dem von Ihnen vorgeschlagenen Duplikat zu tun hat. –