First of all, a word about your deductive process. Your conclusion is that char is converted to int, and therefore there is no addition operator defined on char - that is the point, so good on you. But I note that the deduction process is not needed. You could just read section 7.7.4 of the specification, which clearly describes all the built-in addition operators. In short, it is int + int, uint + uint, long + long, ulong + ulong, float + float, double + double, decimal + decimal, enum-and-base type, delegate command, line + line, line + object and object + line. (And, of course, options with canceled to zero values ββthat include value types.) So, yes, there are no addition operators that accept characters.
Secondly, to answer your question "why not?". - The characters are a little strange. Their memory is short integers, but their semantics are the characters of characters in a string. So, should char be considered as an integer form or as a short string? In this case, the language developers decided to follow the example of earlier languages, such as C, and process characters, such as integers, when doing math on them that does not include strings. If you want to treat them as short strings, there are many ways to convert characters to strings. Adding an empty string, as another answer suggests, unambiguously tells the compiler "this operation is performed in strings, not in the value of an integer character".
Eric Lippert
source share