うーん、条件演算子とは全然違いますが、ヌル合体演算子(??)のことを考えていると思います。(「似ている」と言ったと思います:)「三項」は演算子のオペランドの数を指すだけであることに注意してください-したがって、条件演算子は三項演算子ですが、ヌル合体演算子は二項演算子です。
大まかに次の形式を取ります。
result = first ?? second;
null のsecond
場合にのみ評価されます。first
割り当ての対象である必要はありません。たとえば、メソッドの引数を評価するために使用できます。
最初のオペランドはnull 許容である必要がありますが、2 番目のオペランドはそうではないことに注意してください。変換に関していくつかの特定の詳細がありますが、単純なケースでは、式全体の型は 2 番目のオペランドの型です。結合性により、演算子の使用をきちんと積み重ねることもできます。
int? x = GetValueForX();
int? y = GetValueForY();
int z = GetValueForZ();
int result = x ?? y ?? z;
x
とy
は null 可能ですが、z
と ではないことに注意してくださいresult
。もちろん、 null 可能にすることもz
できますが、その場合も null 可能にresult
する必要があります。
基本的に、オペランドはコードに現れる順序で評価され、null 以外の値が見つかると評価が停止します。
ああ、上記は値型の観点から示されていますが、参照型でも機能します (常にnull 可能です)。