我正在尝试将我的字符串变量转换为整数以向它添加一个值 (+1),但我得到的结果是:
1111
事实上,当我将它重新转换为字符串时,我总共应该得到 4 个。
我做错了什么?
public string str_Val = "1";
void Update () {
if (str_Val != "5") {
str_Val = int.Parse (str_Val + 1).ToString ();
}
}
答案 0 :(得分:6)
这完全取决于操作的优先级:
int.Parse (str_Val + 1)
在上面的第一行中,加法发生 str_Val + 1
输出 11
、111
、111
等
然后解析发生将 "11"
更改为 11
然后字符串发生将 11
更改为 "11"
因此将您的代码更改为
str_Val = (int.Parse(str_Val)+1).ToString();
这将首先将字符串转换为 int,然后添加两个整数,最后再次将整数转换为字符串。
答案 1 :(得分:1)
您在解析之前将 1 连接到字符串,这就是代码行为的原因...
所以你在做:
<块引用>“1”+ 1
“11”
解析为 int ("11")
转换为字符串(11)
改为:
if (str_Val != "5")
{
str_Val = (int.Parse(str_Val) + 1).ToString ();
}
}