Null-Koaleszenz bedeutet ungefähr return x, unless it is null, in which case return y
Ich brauche oft return null if x is null, otherwise return x.y
ich kann nutzen return x == null ? null : x.y;
Nicht schlecht, aber das null
in der Mitte stört mich immer - es scheint überflüssig. Ich würde so etwas bevorzugen return x :: x.y;
, wo das, was folgt ::
, nur ausgewertet wird, wenn das, was davor steht, nicht ausgewertet wird null
.
Ich sehe dies fast als das Gegenteil von Null-Koaleszenz, gemischt mit einem knappen Inline-Null-Check, aber ich bin [ fast] ] sicher, dass es in C # keinen solchen Operator gibt.
Gibt es andere Sprachen, die einen solchen Operator haben? Wenn ja, wie heißt es?
(Ich weiß, dass ich eine Methode dafür in C # schreiben kann; ich verwende return NullOrValue.of(x, () => x.y);
, aber wenn Sie etwas Besseres haben, würde ich das auch gerne sehen.)
return x ? x.y : NULL
. Yay für die Konvertierung von Zeigertypen in Boolesche Werte!