use*_*613 2 c# for-loop list windows-phone-7.1
我正在尝试循环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);
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,删除不会一直发生,有时只会发生.有人有建议吗?这两个列表都是List,它们有40个元素,我想删除元素本身.即使在调试时我也可以看到列表计数不一样(它们都具有相同的初始数,并且它们都需要在此循环中删除).如果重要的话,我正在开发Windows手机平台..
我很确定你应该使用List.RemoveAt而不是List.Remove.RemoveAt将删除指定索引处的项目,而Remove将寻找那个你传递的对象,如果它在那里从列表中删除.但我很确定看到你的代码location并rank代表索引,而不是对象本身.
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);
}
Run Code Online (Sandbox Code Playgroud)
编辑:您可能还需要考虑在开始循环之前确保您的rows并且pondRanks有足够的元素(39)(或者i < 39在其长度的上限处更改为最大值)