C # Why does '+ a short convert to 44,
I have a line of code that looks like this:
MyObject.PhoneNumber = '+' + ThePhonePrefix + TheBizNumber;
Basically, I'm creating a phone number in E164 format and then I assign that string to a string property of an object. thePhonePrefix is a short that holds the international phone prefix and TheBizNumber is a string that holds the phone number digits.
Why didn't the compiler bug when I was concatenating a short in the string in the first place? And then why does '+ 1 equal 44 ?? This was a pretty hard bug to track because there was no compile error and 44 is the phone prefix for the UK so everything "looked" like it was working because the client-side code just saw a UK number. why 44?
Thanks.
Answer:
Why didn't the compiler bug when I was concatenating a short in the string in the first place?
String concatenation using+
Sign internally cballsstring.Concat
, Which internally CILSToString
On each parameter. Hence no error.
Why does '+ 1
You are doing character/numeric arithmetic.43
Being value+
And short/int1
Is 44.
Because of operator + associativity from left to right it is first character/numeric addition and then string concatenation.
So it is like:
MyObject.PhoneNumber = ('+' + ThePhonePrefix) + TheBizNumber;
You can use"+"
To mark it as a string or explicitly callString.Concat
Like:
var result = string.Concat('+', ThePhonePrefix, TheBizNumber);
Web: http://stackoverflow.com/questions/29397495/why-does-a-short-convert-to-44