gpt4 book ai didi

c# - 收到 "ArgumentOutOfRangeException"错误但不知道如何解决?

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:14 24 4
gpt4 key购买 nike

当我循环遍历列表时,我的代码抛出一个超出范围的错误,但我不知道为什么。这是我的代码:

        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 中删除了足够多的内容,因为 neighborCountertoBeCheckedCounter 移动时没有移动,因此可能会有一个点 neighborCounter = neighborList .Count,这将触发您的 ArgumentOutOfRangeException

我建议您避免在循环或 foreach 中删除。您可以列出所有要删除的项目,然后再删除,即

if(tile1 == tile2)
{
itemsToRemove.Add(neighborList[neighborCounter]); // itemsToRemove can be a HashSet
}

关于c# - 收到 "ArgumentOutOfRangeException"错误但不知道如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35545830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com