System.IndexOutOfRangeException:索引超出了数组的范围

时间:2012-10-19 01:49:20

标签: c#

我有以下数组:

public string reArrange(string s)
{
    char[] array = s.ToCharArray();
    int length = array.Length;
    char[] arranged = new char[length];

    for (int i = 0; i < length; i++)
    {
        int newposition = length - i;
        arranged[newposition] = array[i];
    }

    return new string(arranged);
}

但上述方法引发了以下错误:

  

System.IndexOutOfRangeException:索引超出了数组的范围。

那可能是什么错误?

4 个答案:

答案 0 :(得分:4)

i为零时,您将访问索引为newposition的数组,该数组等于length;这是一个超出数组最后一个有效索引的索引,0length-1

这将解决问题:

int newposition = length - i - 1;

答案 1 :(得分:2)

假设长度为10个字符。 在循环的第一次迭代中,newposition = 10 - 0 = 10.此索引超出了排列数组的范围。

另请参阅this post有关反转字符串的信息。从那篇帖子......

public static string Reverse( string s )
{
    char[] charArray = s.ToCharArray();
    Array.Reverse( charArray );
    return new string( charArray );
}

答案 2 :(得分:1)

你要走远了,

for (int i = 0; i < length-1; i++)

答案 3 :(得分:1)

public string reArrange(string s)
{
    char[] array = s.ToCharArray();
    int length = array.Length;
    char[] arranged = new char[length];

    for (int i = 0; i < length; i++)
    {
       int newposition = length - i - 1;
       arranged[newposition] = array[i];
    }
    return new string(arranged);
}