为什么我的指数超出范围?

时间:2014-05-01 14:59:36

标签: c#

所以我有一个包含9个元素的List,但是当我尝试在" right"中添加数组[4]元素时,我得到了范围错误的索引。名单。有人能告诉我什么是错的吗?

public static int dosomething(ref List<int> array, int n) 
{
    List<int> left = new List<int>();
    List<int> right = new List<int>();

    for (int i = 0; i < n; i++) 
    {
        if (i < n/2) 
        {
            left.Add(array[i]);
            Console.WriteLine("Left[{0}] = {1}", i, left[i]);
        } 
        else 
        {
            Console.WriteLine("i = {0}", i);
            right.Add(array[i]);
            Console.WriteLine("Right[{0}] = {1}", i, right[i]);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您为leftright使用了错误的索引。由于您在整个数组中进行迭代,并且在某些时间添加到left并在其余时间添加right,因此您无法使用i作为索引进入那些检索价值的人。该错误实际上发生在您的Console.WriteLine()来电中。

相反,您可以使用:

left[left.Count - 1];

或:

right[right.Count - 1];