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".


Reply via email to