我目前有 4 个计时器向 List
添加对象但一旦他们离开 WinForms 控件,就应该将其删除。
我已经试过了:
foreach (Auto a in autoListe)
{
if (a.X > 550 || a.X < -50 || a.Y > 550 || a.Y < -50)
{
autoListe.Remove(a);
}
}
但是当 Object
离开 Control 这会给出一个 Exception
由于 List
用于添加 Car
s 同时。
所以现在我不确定如何删除 Object
自从添加 Object
s 需要保持不变
最佳答案
您不能在迭代时修改集合。您必须存储要删除的汽车,然后将它们从原始列表中删除。
var autosDieGeloeschtWerdenSollen = new List<Auto>();
foreach (Auto a in autoListe)
{
if (a.X > 550 || a.X < -50 || a.Y > 550 || a.Y < -50)
{
autosDieGeloeschtWerdenSollen.Add(a);
}
}
autoListe.RemoveRange(autosDieGeloeschtWerdenSollen);
如果自动列表是 List<Auto>
您还可以使用以下内容:
autoListe.RemoveAll(a => a.X > 550 || a.X < -50 || a.Y > 550 || a.Y < -50);
您也可以使用向后的 for 循环,但我不建议这样做,因为它很难理解。这也仅在您的收藏是 List<Auto>
时才有效。 .
for (int i = autoListe.Count - 1; i >= 0; i--)
{
var a = autoListe[i];
if (a.X > 550 || a.X < -50 || a.Y > 550 || a.Y < -50)
{
autoListe.RemoveAt(i);
}
}
关于c# 多个计时器编辑同一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440564/