首页 > 解决方案 > 当我使用 array.Length 作为索引时,为什么我的数组会抛出错误“System.ArgumentOutOfRangeException”?

问题描述

我正在使用StringBuilder转换为字符的 int 来替换字符串中的每个字符。出于某种原因,即使索引在范围内,字符串生成器也会引发“超出索引错误”。

我想使用 I 作为索引,但我将其更改为array.Length只是为了确保索引在范围内。

string input = Console.ReadLine();

char[] array = input.ToCharArray();

int totalOffsetToRemove = array.Length + 44;

StringBuilder sb = new StringBuilder(input);

string result;

for (int i = array.Length; i > 0; i--)
{
    char c = Convert.ToChar(totalOffsetToRemove);                    
    sb[array.Length] = c;

    result = sb.ToString();                  
    Console.WriteLine(result);

    totalOffsetToRemove -= 2;
}

标签: c#arrays

解决方案


索引从零开始,因此 array[array.Length] 无效并且索引范围从0array.Length - 1

改变

for (int i = array.Length; i > 0; i--)

for (int i = array.Length - 1; i >= 0; i--)

推荐阅读