Numeric operators are part of the IL itself. The "+" operator in strings is a bit special, although it is not overloaded with the type of string itself, it is executed by the compiler. C # compiler translates:
string x = a + "hello" + b;
in
string x = string.Concat(a, "hello", b);
This is more efficient than if concatenation was performed using regular operators, because otherwise a new line would have to be created at each concatenation.
Jon skeet
source share