【发布时间】:2013-04-27 11:33:44
【问题描述】:
我正在尝试循环 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 平台..
【问题讨论】:
-
rows和pondRanks是什么类型?也许您打算改用RemoveAt。 -
正如@ChrisSinclair 所说。 RemoveAt 删除一个位置。删除查找对象
-
除了其他答案,值得注意的是,您的循环只会执行 39 次...您需要将其更改为
for (int i = 0; i <= 39; i++)或更首选的方式for (int i = 0; i < 40; i++)...甚至可能将硬值 40 提取到一个名为迭代的变量中? -
列表是整数。此外,在我修复此错误后,for 循环将发生变化。我希望从列表中删除该行、位置成员。感谢您的所有帮助!
-
我真的不得不使用 RemoveAt .. 不知道为什么我花了这么多时间才意识到!非常感谢!!
标签: c# list for-loop windows-phone-7.1