On Saturday, 26 May 2018 at 10:08:35 UTC, Dukc wrote:
On Saturday, 26 May 2018 at 09:01:29 UTC, rumbu wrote:
Sorry, but the mistake here is the fact that you wrongly
assume C behavior in C#.
Yes it is. But that does not make differentiating concat and
addition in language desing any less worthwhile. In car
crashes, the mistake is usually made by a driver, but I know
no-one who says safety belts aren't worthwhile.
Adding chars to an existing string will result in a string as
in the language specification.
In fact I didn't make the mistake there. What surprised me was
that adding two INDIVIDUAL chars result in a string. When op+
is srictly for mathematical summing, there are no ambiquites.
Adding 2 individual chars in C# (and in D also) will result in an
int. Adding an int to a string will box the int and ToString()
will be called on the resulted object => result is a string. So
'a' + 'b' + "sssss" = 195 + "sssss" = 195.ToString() + "sssss" =
"195sssss".
Therefore your first example will work correctly if you convert
the int result back to char: (char)('a' + 'b') + "sssss" will
render the correct result.
Even if C# would use '~' instead of '+', you had a type
conversion problem, not an operator problem, you wrongly assumed
that adding two chars will result in a char, not an int. In the
hypothetically code 'a' + 'b' ~ "sssss" is also "195sssss".