我初始化了一个仅由不超过 2 的数字组成的变量 g,然后初始化了一个由三个元素组成的 bool 数组,然后f[g[0]]
我得到一个异常:“索引超出了数组的范围。” 既然f[3]
为什么g[0] = f.length
总是不管 的长度g
和值g[0]
?
string g = "022";
bool[] f = { true, true, true };
Console.WriteLine(f[(int)g[0]]);
Console.ReadLine();
我初始化了一个仅由不超过 2 的数字组成的变量 g,然后初始化了一个由三个元素组成的 bool 数组,然后f[g[0]]
我得到一个异常:“索引超出了数组的范围。” 既然f[3]
为什么g[0] = f.length
总是不管 的长度g
和值g[0]
?
string g = "022";
bool[] f = { true, true, true };
Console.WriteLine(f[(int)g[0]]);
Console.ReadLine();
您的结论“g[0] = f.length 总是无论 g 的长度和 g[0] 的值如何”实际上是不正确的,如下所述:
既然
g
是 astring
,g[0]
就是 achar
。(int)g[0]
正在将字符的 ASCII 值转换为int
.的 ASCII 值为
'0'
48。因此
f[(int)g[0]]
尝试访问f
索引 48 是无效的。如果要访问
f
索引 0(中的第一个字符g
),可以使用:通过减去
'0'
( 的 ASCII'0'
),您将得到该字符的数值。完整示例:
输出: