閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

null合体演算子 ?? の優先順位

何も考えずに使ったらハマったのでメモ。

int? foo = null;
(5 + foo ?? 0); // => "5"を期待したけど"0"になる

これは:

(5 + (foo ?? 0)); // => 5

と書きましょう。StyleCopで乗算や除算には問答無用で括弧を付けろと言われる環境なので油断していました(何も言われないので)。