微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 为什么”短暂转换为44

我有一行代码如下:

MyObject.PhoneNumber = '+' + ThePhonePrefix + TheBizNumber;

基本上,我正在创建一个E164格式的电话号码,然后我将该字符串分配给一个对象的字符串属性. ThePhonePrefix是一个保存国际电话前缀的短消息,而TheBizNumber是一个保存电话号码数字的字符串.

当我首先连接字符串中的short时,为什么没有编译器错误?然后为什么”1等于44?这是一个非常难以跟踪的错误,因为没有编译错误,44是英国的电话前缀,因此所有“看起来”都像是在工作,因为客户端代码只看到一个英国号码.为什么44?

谢谢.

解决方法

Why didn’t the compiler bug when I was concatenating a short in the
string in the first place?

使用sign内部的字符串连接调用string.Concat,它在每个参数内部调用ToString.因此没有错误.

why does ‘+’ + 1

你正在做字符/数字运算. 43是值和short / int 1是44.

由于从左到右的运算符关联性,它是第一个字符/数字加法,然后是字符串连接.

所以它就像:

MyObject.PhoneNumber = ('+' + ThePhonePrefix) + TheBizNumber;

您可以使用“”将其标记为字符串或显式调用String.Concat,如:

var result = string.Concat('+',ThePhonePrefix,TheBizNumber);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐