Convert.ToInt32(string) 给出错误的值

Tii*_*ane 3 c#

当我使用Convert.toint32解析字符串时,我得到了奇怪的数字

var check = "82567";
Convert.ToInt32(check[0]) //I get 56
Convert.ToInt32(check[0].ToString());// I get 8
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解这一点吗

can*_*on7 5

check[0]是单个字符——字符“8”。这意味着您调用Convert.ToInt32(char)重载,其中:

返回一个 32 位有符号整数,表示 value 参数的 UTF-16 编码代码单元

'8'值为 56。

check[0].ToString()返回一个字符串,因此您调用Convert.ToInt32(string),它返回:

一个 32 位有符号整数,相当于 value 中的数字,如果 value 为 null,则为 0(零)