获取"索引超出了数组的范围"例外,我不知道为什么

时间:2015-07-12 16:19:47

标签: c# arrays

public string[] ReverseString(string input)
{
    int startPos = 0;
    int stringLength = input.Length;

    string text = input;
    string[] inputArr = new string[stringLength];       
    string[] outputArr = new string[stringLength];      

    for (int index = 0; index < stringLength; index++)
    {
        inputArr[index] = text.Substring(startPos, 1);  
        ++startPos;
    }

    int outputIndex = 0;
    for (int index = stringLength; index > 0; index--)
    {
        outputArr[outputIndex] = inputArr[index];
        ++outputIndex;
    }
    return outputArr;
}

在这一行:

outputArr[outputIndex] = inputArr[index];

编译器给我一个错误说:

  

&#34;索引超出了数组的范围。&#34;

为什么呢?它似乎循环通过另一个数组就好了但是只要它接触到这一行就会给我这个错误。

2 个答案:

答案 0 :(得分:3)

一个一个错误。这个循环:

for (int index = stringLength; index > 0; index--)

index的范围是stringLength1,而stringLength - 10的范围应该是for (int index = stringLength - 1; index >= 0; index--) 。将其更改为:

array.GroupBy(f => f.parent)
    .Select(g => new Bar { parent = g.Key, children = g.Select(f => f.child).ToArray() })
    .ToArray();

答案 1 :(得分:0)

问题在于,在第二个循环中,您正在使用索引跳过0.

inputArr[index]

要解决此问题,您应该更改

inputArr[index - 1]

{{1}}。