在遍历列表时,我的代码抛出了超出范围的错误,但我不知道为什么。这是我的代码:
for(int neighborCounter = neighborList.Count - 1; neighborCounter >= 0; neighborCounter--)
{
for(int toBeCheckedCounter = toBeChecked.Count - 1; toBeCheckedCounter >= 0; toBeCheckedCounter--)
{
Vector2 tile1 = neighborList[neighborCounter];
Vector2 tile2 = toBeChecked[toBeCheckedCounter];
if(tile1 == tile2)
{
neighborList.Remove(neighborList[neighborCounter]);
}
}
}
如果你们需要更多背景信息,请告诉我。错误出现在声明tile1的行上。似乎我正在尝试访问neighborList不包含的元素。
最佳答案
您的neighborCounter
是一个外循环。如果您从neighborList
中移除了足够多的内容,则由于neighborCounter
在移动时没有移动,因此toBeCheckedCounter
可能会出现一个点,这将触发您的neighborCounter = neighborList.Count
。
我建议您避免循环或删除foreach。您可以列出要删除的所有项目,然后再进行删除。
if(tile1 == tile2)
{
itemsToRemove.Add(neighborList[neighborCounter]); // itemsToRemove can be a HashSet
}
关于c# - 收到“ArgumentOutOfRangeException”错误,但不知道如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35545830/