ToString 如何与索引器一起使用?

How does the ToString work with indexers?

我有以下代码:

int age = 47; 
int firstDigit = age.ToString()[0];
Console.WriteLine($"firstDigit: { firstDigit }");

如果我 运行 这些代码,我得到 firstDigit 的 52 值。
在这段代码中发生了什么以获得值 52?

我怎样才能得到正确的第一位数字 (=4) 的年龄?

52 是数字 4 的 UNICODE/ASCII 值,您真正要做的是将年龄转换为字符串“47”,并将第一个字符“4”作为整数,即 52 - 只是使用 char 坚持 "4"

52 是 for 4 的 ascii 值。要得到 4,你需要这样:

int age = 47; 
char firstDigit = age.ToString()[0];
Console.WriteLine($"firstDigit: { firstDigit }");

请记住,数字四与字符值“4”之间存在很大差异。如果你真的想要数字四,你可以这样做:

int age = 47; 
int firstDigit = age.ToString()[0] - '0';
Console.WriteLine($"firstDigit: { firstDigit }");

它依赖于这样的想法,即无论您使用的是什么字符系统,数字将始终按从 0 开始的顺序表示。

将其解析为字符串:

int age = 47;
Console.Write(age.ToString()[0]);