forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Индексация Списка (http://forum.boolean.name/showthread.php?t=3721)

johnk 22.06.2007 12:46

Индексация Списка
 
Простите, что запостил сюда, но думаю, C# и C++ похожи, а так в болтовне зафлудят всё.

Итак, весь вопрос вот в чем: Как проиндексировать связной список в C#? :) У меня в цикле идет проверка всех элементов в списке, и у того, что имеет значение жизни равным 0 - удаляется. Все бы ничего, но компилятор сразу же ругается, что мол, список модифицирован, дальнейшие действия не могут быть произведены. Мне нужно его "рефрешить" что ли, вот только как?


Код такой (все довольно просто):
Сначала создаю связной список (статический он для того, что бы я смог добавлять в него элементы с любой части кода :) )
Код:

static LinkedList<Bullet> Bulllist = new LinkedList<Bullet> ( );
Потом в классе делаю private - переменную:
Код:

float alpha = 1.0f;
В Методе Update она декрементируется:
Код:

public void Update ( )
                {
                x += xspeed;
                y += yspeed;
                alpha -= 0.01f;
                if ( alpha <= 0 ) Bulllist.Remove ( this );
                }

И сообственно, последнее условие и есть то, из-за чего все проблемы :) Далее в игровом цикле есть вот такое выражение:
Код:

foreach ( Bullet i in Bulllist ) { i.Update ( );}
- именно сюда и ругается компилятор. *Ругается, если alpha у i равна 0.

alcoSHoLiK 22.06.2007 15:26

Re: Индексация Списка
 
При удалении элемента может просто изменится порядок элементов, а может вообще все перемешаться во внутренней структуре списка. Нужно заменить foreach на свой аналог, где контролировать удаления. Или надо просто помечать эелементы как удаленные, а потом где-то их удалять (по одному).

johnk 22.06.2007 15:50

Re: Индексация Списка
 
Спасибо, попробую. :)

impersonalis 22.06.2007 16:20

Re: Индексация Списка
 
http://www.boolean.name/showthread.php?t=3240
эту тему почитай

johnk 04.07.2007 12:30

Re: Индексация Списка
 
Спасибо всем, проблема решена. Только частично. Ибо ничего это мне не дало. В общем, скажу как исправить - создавать стек, а не связной список :-) Вот только удалять в реалтайме все равно ни как нельзя.

alcoSHoLiK 04.07.2007 13:19

Re: Индексация Списка
 
Надо было выбирать С++)

johnk 04.07.2007 13:35

Re: Индексация Списка
 
Ничего, до него я тоже добреусь :-)


Часовой пояс GMT +4, время: 23:42.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot