gpt4 book ai didi

c# - 为什么 '+' + 短转换为 44

转载 作者:行者123 更新时间:2023-11-30 18:49:41 25 4
gpt4 key购买 nike

我有一行代码看起来像这样:

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

基本上,我创建了一个 E164 格式的电话号码,然后将该字符串分配给一个对象的字符串属性。 ThePhonePrefix 是包含国际电话前缀的短字符,TheBizNumber 是包含电话号码数字的字符串。

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

enter image description here

最佳答案

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

使用 + 符号的字符串连接在内部调用 string.Concat,后者在每个参数上内部调用 ToString。因此没有错误。

why does '+' + 1

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

由于运算符 + 结合性,从左到右是第一个字符/数字加法,然后是字符串连接。

就是这样:

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

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

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

关于c# - 为什么 '+' + 短转换为 44,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29397495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com