为什么当将第一个字符串元素传入 bool 数组时,该元素总是等于数组的长度?

问题描述 投票:0回答:1

我初始化一个仅由不超过 2 的数字组成的变量 g,然后初始化一个由三个元素组成的 bool 数组,在 f[g[0]] 处我得到一个异常,“索引超出了数组的边界。”既然 f[3] 为什么 g[0] = f.length 总是不管 g 的长度和 g[0] 的值?

字符串 g = "022";

bool[] f = { true, true, true };

Console.WriteLine(f[(int)g[0]]); Console.ReadLine();

c#
1个回答
0
投票

因为

g
string
,所以
g[0]
char

(int)g[0]
正在将字符的 ASCII 值转换为
int

'0'
的 ASCII 值为 48。

因此

f[(int)g[0]]
正在尝试访问索引 48 处的
f
,这是无效的。

如果你想访问索引0处的

f
,你可以使用:

f[(int)(g[0] -'0']

通过减去“0”(

'0'
的 ASCII),您将得到字符的数字值。

© www.soinside.com 2019 - 2024. All rights reserved.