指数超出范围。必须是非负数且小于集合的大小

时间:2014-08-12 17:02:30

标签: c# .net

我有以下方法检查第一个索引中是否有对象,如果为空则添加到

private void GetRestriction(TableRow[] RistrictionsArgs)
{
    var restrictionList = new List<Restriction>();
    foreach (var restriction in RistrictionsArgs)
    {

        var Id = int.Parse(restriction.Values.ElementAt(1));
        var test = restrictionList[Id - 1];
        if (test == null)
        {
            restrictionList[Id - 1] = new Restriction()
            {
                SequenceID = Id.ToString(),

            };
            test = restrictionList[Id - 1];

        }
    }
}           

我遇到的问题是当它到达行var test = restriction[Id-1];时它会抛出&#39;索引超出范围。必须是非负数且小于集合的大小。&#39; 我错过了什么?如何检查第一个元素是否为空,然后向其中添加元素?

1 个答案:

答案 0 :(得分:1)

restrictionList中没有项目(长度为0),因此普通restrictionList[anyIndex]无效并将抛出报告的异常。列表会在索引操作上自动增长。

要检查集合是否为空,请使用restrictionList.Length == 0(或根据需要进行其他检查以查看特定Id是否在范围内)。然后使用Add添加一个新元素 - 而不是另一个索引,它也会因为与上面相同的原因而抛出异常。

显示实际ID并解释算法和预期结果可能会产生更好的答案,因为上面的说明说明了目前的错误,而不一定是&#34;如何正确写出&#34;。