Как я циклично выполняюсь через объекты в поле списка и затем удаляю их объект?

19
задан TylerH 12 January 2015 в 14:54
поделиться

6 ответов

Вы хотите удалить все объекты? Если так, сделайте foreach первый, затем просто используйте Items.Clear() для удаления всех их впоследствии.

Иначе, возможно, цикл назад индексатором:

listBox1.BeginUpdate();
try {
  for(int i = listBox1.Items.Count - 1; i >= 0 ; i--) {
    // do with listBox1.Items[i]

    listBox1.Items.RemoveAt(i);
  }
} finally {
  listBox1.EndUpdate();
}
37
ответ дан 30 November 2019 в 01:57
поделиться

Здесь мое решение, не идя назад и без временного списка

while (listBox1.Items.Count > 0)
{
  string s = listBox1.Items[0] as string;
  // do something with s
  listBox1.Items.RemoveAt(0);
}
11
ответ дан 30 November 2019 в 01:57
поделиться

Все остальные отправили "движение назад" ответ, таким образом, я дам альтернативу: создайте список объектов, которые Вы хотите удалить, затем удалить их в конце:

List<string> removals = new List<string>();
foreach (string s in listBox1.Items)
{
    MessageBox.Show(s);
    //do stuff with (s);
    removals.Add(s);
}

foreach (string s in removals)
{
    listBox1.Items.Remove(s);
}

Иногда "работа назад" метод лучше, иногда вышеупомянутое лучше - особенно, если Вы имеете дело с типом, который имеет RemoveAll(collection) метод. Стоящий знания обоих все же.

25
ответ дан 30 November 2019 в 01:57
поделиться

Необходимо пройти набор от последнего объекта до первого. этот код находится в vb

for i as integer= list.items.count-1 to 0 step -1
....
list.items.removeat(i)
next
1
ответ дан 30 November 2019 в 01:57
поделиться

Jefferson прав, необходимо сделать это назад.

Вот c# эквивалент:

for (var i == list.Items.Count - 1; i >= 0; i--)
{
    list.Items.RemoveAt(i);
}
1
ответ дан 30 November 2019 в 01:57
поделиться

Как насчет:

foreach(var s in listBox1.Items.ToArray())
{
    MessageBox.Show(s);
    //do stuff with (s);
    listBox1.Items.Remove(s);
}

ToArray делает копию списка, таким образом, Вы не должны волноваться об этом изменяющий список при обработке его.

1
ответ дан 30 November 2019 в 01:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: