gpt4 book ai didi

c# - 循环和更改列表 - 删除并不总是有效

转载 作者:行者123 更新时间:2023-12-03 22:57:10 27 4
gpt4 key购买 nike

我正在尝试循环 40 次并在此过程中更改列表。

这是代码:

for (int i = 0; i < 40; i++)
{
location = rand.Next(rows.Count);
rank = rand2.Next(pondRanks.Count);
ComputerPonds[rows[location]].Rank = (PondRank)pondRanks[rank];
rows.Remove(location);
pondRanks.Remove(rank);
}

出于某种原因,删除不会一直发生,只是有时发生。有人有建议吗?两个列表都是 List ,它们有 40 个元素,我想删除元素本身。即使在调试时我也可以看到列表计数不相同(它们都具有相同的初始编号并且它们都需要在此循环中删除)。如果重要的话,我正在 Windows Phone 平台上工作..

最佳答案

我很确定你应该使用 List.RemoveAt不是List.Remove . RemoveAt将删除指定索引处的项目,而 Remove将查找您传入的 that 对象,如果它在列表中,则将其从列表中删除。但我很确定看你的代码 locationrank表示索引,而不是对象本身。

for (int i = 0; i < 39; i++)
{
location = rand.Next(rows.Count);
rank = rand2.Next(pondRanks.Count);
ComputerPonds[location].Rank = (PondRank)pondRanks[rank];
rows.RemoveAt(location);
pondRanks.RemoveAt(rank);
}

编辑:您可能还需要考虑确保您的 rowspondRanks在开始循环之前有足够的元素(39)(或改变 i < 39 使其长度达到最大值)

关于c# - 循环和更改列表 - 删除并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16251600/

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