C#のリファレンスが間違ってる

Cの三項演算子は if - else の構文糖衣みたいなものだったが、型推論のある C++-1x や C# では変数の初期値選択に使用できるので構文糖衣以上の意味がある。C++ では式の値にならないほうの部分式は評価されないが、C# でも同じだったろうかと念のため言語リファレンスを見たら、やはり無効となる部分式は評価されないということで安心した。

それはいいのだが、後ろの方を見ると、結合が右からと書いてあるのに、例に挙がっている式が左からの結合になっている。

条件演算子の結合規則は右から左になります。 a ? b : c ? d : e という式は、a ? b : (c ? d : e) ではなく、(a ? b : c) ? d : e と評価されます。

逆だよなぁ、これだと else if チェーンみたいなのが書けないよな、と思って英語版を見ると、正しく書かれている。

The conditional operator is right-associative. The expression a ? b : c ? d : e is evaluated as a ? b : (c ? d : e), not as (a ? b : c) ? d : e.

正しくはこうだろう。

「条件演算子の結合規則は右から左になります。 a ? b : c ? d : e という式は a ? b : (c ? d : e) と評価され、(a ? b : c) ? d : e とはなりません。 」

誤訳なのか英語版の修正に日本語版が追いついていないのかわからないが、こういう細かい間違いもリファレンスでは問題だろう。

GitHubに上がっているので勝手に直してプルリク出せばいいという話ではあるが、おじさんはまだGitHubのアカウントを持っていないのである。ITエンジニアとしてそれでいいのかという話でもあるが、歳をとるとそういうしょうもないことが面倒なのである。こういう面では歳はとりたくないものである。