指数超出范围.必须非负且小于集合的大小
本文关键字:小于 集合 范围 指数 | 更新日期: 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并解释算法和预期结果可能会导致更好的答案,因为上面的注释说明了当前的错误,而不一定是"如何正确书写"。