我有以下方法检查第一个索引中是否有对象,如果为空则添加到
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;
我错过了什么?如何检查第一个元素是否为空,然后向其中添加元素?
答案 0 :(得分:1)
restrictionList
中没有项目(长度为0),因此普通restrictionList[anyIndex]
无效并将抛出报告的异常。列表不会在索引操作上自动增长。
要检查集合是否为空,请使用restrictionList.Length == 0
(或根据需要进行其他检查以查看特定Id是否在范围内)。然后使用Add
添加一个新元素 - 而不是另一个索引,它也会因为与上面相同的原因而抛出异常。
显示实际ID并解释算法和预期结果可能会产生更好的答案,因为上面的说明说明了目前的错误,而不一定是&#34;如何正确写出&#34;。