C#言語仕様ver1.2より抜粋。

7.7.4加算演算子
x + y 形式の演算では、二項演算子のオーバーロードの解決 (7.2.4 を参照) を適用して、
演算子の実装が選択されます。オペランドが、選択した演算子のパラメータの型に
変換され、その結果の型が演算子の戻り値の型になります。

文字列の連結 :
string operator +(string x, string y);
string operator +(string x, object y);
string operator +(object x, string y);
二項演算子 + は、一方または両方のオペランドが string 型のときは、文字列の連結を
行います。文字列連結のオペランドが null の場合は、空の文字列に置き換えられます。
文字列ではない引数は、object 型から継承された仮想の ToString メソッドを呼び出すことで、
文字列形式に変換されます。
ToString が null を返す場合は、空の文字列に置き換えられます。