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

本文关键字:小于 集合 范围 指数 | 更新日期: 2023-09-27 18:17:35

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

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];时,它抛出'索引超出范围。必须非负且小于集合的大小。我错过了什么?如何检查第一个元素是否为空,然后向其中添加元素?

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

restrictionList中不存在任何项(长度为0),因此通常restrictionList[anyIndex]无效,并将抛出报告的异常。列表不是在索引操作时自动增长。

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

显示实际ID并解释算法和预期结果可能会导致更好的答案,因为上面的注释说明了当前的错误,而不一定是"如何正确书写"。

相关文章: