![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| ansen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
Создал коллекцию объектов ArrayList
Теперь пытаюсь в цикле пробегать по объектам и извлекать нужный и после чего удалить его И так пока ArrayList не станет пуст
Выдается ошибка после первого удаления: Collection was modified; enumeration operation may not execute. Кто знает а как провести эту самую "enumeration operation"? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Нельзя внутри форич изменять коллекцию. Используй фор.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| ansen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
Заменил на
И получил Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index А пробегать в обратном порядке (For n=Max to 0 step -1) нельзя |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Ну это естественно, если ты удаляешь элемент, то их становится меньше и последний индекс окажется за пределами диапазона. Можно уменьшать счетчик при удалении элемента, но вообще задачу лучше бы решать более продвинутыми средствами.
Во-первых забудь об эррэйлист и используй джинерик-коллекции, такие как List(Of T). Во-вторых, фильтрацию коллекции можно выполнить линк-запросом или вызовом соответствующей функции. То есть в твоём случае надо создать коллекцию List(Of Point) (назовём её Pointlist), и отфильтровать так например
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| ansen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
Попробовал " более продвинутыми средствами"...
Объявил
Где в качество запоминаемых объектов тоже являются специфические коллекции от ESRI И суть проблемы у меня не создавать какую-то фильтрацию, а выбрать ВСЕ элементы в непредсказуемой последовательности. И процесс заканчивается при опустошении списка сам А если не применять удаление выбранных, то нужно заморачиваться с какой-то структурой, где кроме объекта еще флажок, да еще счетчик и т. д. А потом еще выгружать. С успехом все это делал в VB6. А тут... " более продвинутое средство" выдает тоже самое :Collection was modified; enumeration operation may not execute. Хочу получить ответ по существу: Кто знает а как провести эту самую "enumeration operation"? Или это невыполнимо |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Учитывая, что у тебя снова выпало то же самое исключение, могу предположить, что ты снова пытался изменять коллекцию в фориче, не смотря на то, что в первом посте я написал Судя по всему продвинутым для тебя является средство, которое тебе это разрешило бы. Если бы ты читал внимательнее, то вероятно заметил бы, что говоря о продвинутом средстве я указал два пункта. После чего даже привел пример. Суть проблемы следует описывать в самом начале, а в данном случае мне пришлось догадываться что ты делаешь
Еще можно создать новую коллекцию и добавлять удаленные элементы в нее. Основную коллекцию обрабатывать в цикле While, где условием завершения будет именно опустошение списка. А тут это запрещено -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Продвинутый способ перемешивания выглядит так. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| ansen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
Я "что-то плохо не понял" по поводу
Каким образом я буду бегать по списку? И все таки: перенумерацию (обновление,enumeration) списка можно сделать? Предполагаю три ответа: Да, Нет и Не знаю. А последнее ах как мы не умеем говорить Это сообщение отредактировал(а) ansen - 25.4.2013, 22:50 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
В последнем посте я предоставил тебе готовый код для копипасты. Этот код перемешивает коллекцию рандомно. Что еще надо? По поводу обработки в цикле, это просто решение "по-старинке" и в нем был бы смысл, если бы это нельзя было решить теми двумя строками, которые я показал. А по списку можно пробежать по индексу, получаемому рандомно. Добавлено @ 22:58 Научись сначала читать, что тебе ответили. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| ansen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
Нашел решение перенумерацию (обновление,enumeration) списка можно сделать!
Для этого нужно вывалится из цикла:
Добавлено @ 23:21 Мне перемешивать ничего не нужно! Тот же совет - научись читать! Непредсказуемость выбора определяют определенные значения элементов списка. А элементы списка поступают как бог на душу положит! Это сообщение отредактировал(а) ansen - 25.4.2013, 23:24 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
И как это сообразуется с этим?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| ansen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
"непредсказуемая последовательность" и "случайная(random) последовательность" не являются синонимами!
непредсказуемая - заранее неизвестная. Это сообщение отредактировал(а) ansen - 25.4.2013, 23:30 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Может просветишь, что же это за зверь такой эта твоя "непредсказуемая последовательность". Я так понимаю, что последовательность, сформированная случайным образом - предсказуемая. Ты это хочешь сказать?
Добавлено через 1 минуту и 53 секунды Что значит "заранее неизвестная". Что именно в ней неизвестно заранее? Уж не порядок ли следования элементов, так случайно? -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| ansen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
Т.е. пробегаю по списку и смотрю одно из значений элемента(у элемента, который тоже список их много). Удовлетворяет условию - использую определенным образом и удаляю. Это использование меняет условие выбора для следующего элемента и т.д. до полного обнуления списка. Надеюсь все понятно. Спасибо всем! Это сообщение отредактировал(а) ansen - 25.4.2013, 23:53 |
|||
|
||||
| diadiavova |
|
||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
И что это значит? Вот я набросал код с решением, представленным ранее. Здесь список чисел расположенный в порядке возрастания. Далее я его перемешиваю рандомно и вывожу на консоль. Повторяю это десять раз
Вот результат перемешивания
Каждый вариант на новой строке. Теперь ответь, чем это отличается от непредсказуемой коллекции. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||||
|
|||||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |