Ответ 1
Это всегда было. +
эквивалентен string.Concat()
, если хотя бы один из операндов является строкой. string.Concat()
имеет перегрузку, которая принимает экземпляр object
. Внутри он вызовет метод объекта ToString()
перед конкатенацией.
Найден соответствующий раздел в спецификации С# 7.7.4 Оператор добавления:
Конкатенация строк:
string operator +(string x, string y); string operator +(string x, object y); string operator +(object x, string y);
Оператор binary + выполняет конкатенацию строк, когда один или оба операнды имеют тип string. Если операнд конкатенации строк null, заменяется пустая строка. В противном случае любая строка аргумент преобразуется в его строковое представление, вызывая виртуальный метод ToString, унаследованный от объекта типа. Если ToString возвращает null, заменяется пустая строка.