You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么调用string.Split后用Convert.ToInt32转字符得到的数值发生变化?

问题原因

  • a.Split(',') 执行后没有接收返回值,Split方法不会修改原字符串本身,你后续操作的仍然是原始的"4,3,2"字符串,并没有用到拆分后的结果。
  • 字符串的索引器a[0]返回的是char字符类型的'4',不是字符串"4"。Convert.ToInt32传入char参数时,返回的是该字符对应的ASCII编码值:'4'的ASCII码为十进制52,'2'的ASCII码为十进制50,和你看到的错误输出完全吻合。
  • 你直接调用Console.WriteLine(a[0])输出4,是因为Console.WriteLine的char类型重载会直接输出字符的可视化内容,不会输出它的底层编码值,所以造成了“a[0]就是数字4”的错觉。

正确写法

string a = "4,3,2";
// 接收Split返回的字符串数组
string[] splitResult = a.Split(',');
int one = Convert.ToInt32(splitResult[0]);
int two = Convert.ToInt32(splitResult[2]);

执行上述代码后,one的值为4,two的值为2,符合预期。

内容的提问来源于stack exchange,提问作者Tian Le

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 10:00:03