繁体   English   中英

循环和更改列表-删除并非始终有效

[英]Looping and changing a list - remove doesn't always work

我正在尝试进行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会找你通过对象,如果它在那里从列表中删除。 但是我很确定,在您的代码中, 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);
}

编辑:您可能还需要考虑在开始循环之前(或将i < 39更改为最大长度上限),确保您的rowspondRanks具有足够的元素(39)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM