c# – 为什么”短暂转换为44
我有一行代码如下:
MyObject.PhoneNumber = '+' + ThePhonePrefix + TheBizNumber; 基本上,我正在创建一个E164格式的电话号码,然后我将该字符串分配给一个对象的字符串属性. ThePhonePrefix是一个保存国际电话前缀的短消息,而TheBizNumber是一个保存电话号码数字的字符串. 当我首先连接字符串中的short时,为什么没有编译器错误?然后为什么”1等于44?这是一个非常难以跟踪的错误,因为没有编译错误,44是英国的电话前缀,因此所有“看起来”都像是在工作,因为客户端代码只看到一个英国号码.为什么44? 谢谢. 解决方法
使用sign内部的字符串连接调用string.Concat,它在每个参数内部调用ToString.因此没有错误.
你正在做字符/数字运算. 43是值和short / int 1是44. 由于从左到右的运算符关联性,它是第一个字符/数字加法,然后是字符串连接. 所以它就像: MyObject.PhoneNumber = ('+' + ThePhonePrefix) + TheBizNumber; 您可以使用“”将其标记为字符串或显式调用String.Concat,如: var result = string.Concat('+',ThePhonePrefix,TheBizNumber); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |