加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:46:17 所属栏目:百科 来源:网络整理
导读:我有一行代码如下: MyObject.PhoneNumber = '+' + ThePhonePrefix + TheBizNumber; 基本上,我正在创建一个E164格式的电话号码,然后我将该字符串分配给一个对象的字符串属性. ThePhonePrefix是一个保存国际电话前缀的短消息,而TheBizNumber是一个保存电话号
我有一行代码如下:

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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读