将字符串转换为 int 然后再转换回字符串

时间:2021-02-16 14:20:57

标签: c# unity3d

我正在尝试将我的字符串变量转换为整数以向它添加一个值 (+1),但我得到的结果是:

1111

事实上,当我将它重新转换为字符串时,我总共应该得到 4 个。

我做错了什么?

public string str_Val = "1";

void Update () {
if (str_Val  != "5") {
      str_Val  = int.Parse (str_Val + 1).ToString ();
   }
}

2 个答案:

答案 0 :(得分:6)

这完全取决于操作的优先级:

int.Parse (str_Val + 1)

在上面的第一行中,加法发生 str_Val + 1 输出 11111111

然后解析发生将 "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 ();
   }
}
相关问题