当我使用array.Length作为索引时,为什么数组会引发错误“ System.ArgumentOutOfRangeException”?

时间:2019-03-24 00:38:53

标签: c# arrays

我正在使用StringBuilder通过使用转换为char的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;
}

1 个答案:

答案 0 :(得分:1)

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

更改

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

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