+演算子は加算演算子なのか連結演算子なのか

+ 演算子は、加算演算と連結演算のいずれかの演算を行います。
例えば、次のようなコードをよく目にします。

var i = 5;
var s = i.ToString() + “ABC”;

上記を実行すると、”5ABC” という文字列が変数 s に格納されます。
これは、次のコードに置き換えることができます。

var s = i + “ABC”;

これは、+ 演算子の引数に string 型の値が含まれているため、+ 演算子が連結演算子として処理されてるためです。
次に、以下のコードを実行するとどうなるでしょうか。

var s = 1 + 2 + “A”;

答えは、”12A” ではなく “3A” です。
なぜなら、最初の + 演算子は二つの引数がともに int 型のため、加算演算子として処理されます。
しかし、2 番目の + 演算子は string 型の引数が含まれるため、連結演算子として処理されます。

以上を踏まえて、次のコードを実行した結果、各変数に格納される値を予想してみてください。

var a = 5 + “abc”;
var b = 5 + ‘1’;
var c = 5 + ‘1’ + “”;
var d = “” + 5 + ‘1’;

ちなみに、最初に + 演算子を列挙するような場合、最初に “” + を付け加えておくと、すべての変数において ToString() で得た結果の文字列を連結することができるのでコードが冗長化されることを防ぐことができます。
以下に例を示します。

var i = 1 + 2 + 3 + 4;
var s = “” + 1 + 2 + 3 + 4;

変数 i には、int 型の 10 が格納されますが、変数 s には、”1234″ という文字列が格納されます。