文字連結は当然知っていましたが、R・田中一郎さんの「こいつ動くぞ」の記事で、
1 + "a" + true
が、"1aTrue"と評価されるのには驚きました。
さっそく、MSDNライブラリの「+ 演算子 (C# リファレンス)」を確認すると以下のように書かれていました。
数値型の場合、+ は 2 つのオペランドの合計を計算します。オペランドの片方または両方が文字列型の場合は、オペランドの文字列表現が連結されます。
なるほど。まず、最初の + が出てきたときに、片方が文字列と認識され、"1a" + true となり、これも片方が文字列なので、"1aTrue"となるわけか。
だから、1 + 2 + "a" は、まず、1 + 2 が評価されて、3 + "a" となり、"3a"となる。
"a" + 1 + 2 の場合は、まず、"a" + 1 が評価されて、"a1" + 2 となり、"a12"となるわけですね。
しかし、「MSDNライブラリの説明は、あの短い簡潔な言葉で、ここまでの説明をしているとは、素晴らしい!」と変な感動をしてしまいました。