Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 31
1

foreach и коллекция, обход

01.11.2013, 06:40. Показов 2986. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть массив списков, в нем необходимо найти объект b и удалить его. Как это лучше сделать? После удаления он будет добавлен с новыми координатами (в другую ячейку honeycomb[x, y]). В нынешнем варианте выдает ошибку "Коллекция была изменена; невозможно выполнить операцию перечисления."
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public static List<Bee>[,] honeycomb = new List<Bee>[10, 10];
        
        public static List<Bee> comb = new List<Bee>();
 
        public static void DeleteFromList(Bee b)
        {
           foreach (List<Bee> elemenList in honeycomb)
            {
                foreach (Bee element in comb)
                {
                    if (comb.Contains(element)) { comb.Remove(element); }
                }
            }
          
 
        }
 
        public static void AddItemList(Bee b)
        {
            int x = Bee.coords.x;
            int y = Bee.coords.y;
            comb.Add(b);
            honeycomb[x, y] = comb;
        }
И еще вопрос. Если у меня есть список объектов, как можно в метод передавать эти объекты?
C#
1
2
3
4
5
6
7
8
9
10
public static List<Bee> beers = new List<Bee>();
for (int i = 1; i < 6; i++)
            {
                x = random.Next(9);
                y = random.Next(9);
                Coords coorr = new Coords(x,y);
                Truten tr = new Truten("truten", coorr, i);
                Hive.beers.Add(tr);
                
            }
Далее мне надо будет выполнить для всех этих tr, которые в списке, следующее:
C#
1
Hive.Live(tr);
Каким образом?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2013, 06:40
Ответы с готовыми решениями:

Обход по элементам массива с помощью foreach
есть цикл, который заполняет файл значениями. foreach($deal as $key){ $v2 = ''; ...

Обход массива (foreach) с определенного значения ?
Всем доброго времени суток! Не нашел ответ на вопрос (срочно нужно было реализовать функционал,...

Рекурсия: после отработки вложенной функции foreach перестает делать предыдущий обход
Всем привет! Делаю иерархию БД. Проблема в следующем: после отработки вложенной функции foreach...

Обработка XML. Цикл foreach (XmlNode.) вложенный во внешний foreach
Здравствуйте. Возникла проблема при обработке XML-файла (с помощью XMLDocument). В теме я новичок....

5
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
01.11.2013, 13:53 2
Цитата Сообщение от shauro Посмотреть сообщение
найти объект b и удалить его. Как это лучше сделать?
foreach не позволяет изменять перебираемую коллекцию. Используйте цикл for.
Цитата Сообщение от shauro Посмотреть сообщение
Если у меня есть список объектов, как можно в метод передавать эти объекты?
Так же как и все остальное.
Цитата Сообщение от shauro Посмотреть сообщение
Далее мне надо будет выполнить для всех этих tr, которые в списке, следующее:
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 31
01.11.2013, 14:10  [ТС] 3
Цитата Сообщение от freeba Посмотреть сообщение
foreach не позволяет изменять перебираемую коллекцию. Используйте цикл for.
О спасибо. не знала )
Цитата Сообщение от freeba Посмотреть сообщение
Так же как и все остальное.
Вот так же, как и все остальное эти трутни у меня не передаются. В цикле, в котором я их помещаю в список, не могу этого сделать.
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
01.11.2013, 14:32 4
Возможно так?
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 31
01.11.2013, 15:31  [ТС] 5
freeba, работает, спасибо

Добавлено через 42 минуты
freeba, прошу прощения, за то, что вопросы глупые такие, а если мне потом это значение надо дольше передавать?
C#
1
2
3
4
5
6
public static void Live(params object[] bees)
        {            
            DeleteFromList(tr);                                
            AddItemList(tr);
            CheckMatcka(tr);
        }
Попыталась сделать таким образом:
C#
1
IEnumerable<Bee> element=bees.Cast<Bee>();
но DeleteFromList(element); выдает ошибку.
Объясните, пожалуйста, что я получила в результате последней операции?
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
01.11.2013, 15:38 6
Можно преобразовывать в массив и изменять foreach (Bee element in comb.ToArray())
0
01.11.2013, 15:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2013, 15:38
Помогаю со студенческими работами здесь

Ошибка в foreach: foreach statement cannot operate on variables of type 'System.Collections.IEnumerator'
using System; using System.Collections; namespace P { class Program { ...

Нужен простой пример из Foreach в Parallel.Foreach
Покажите любой простой пример из Foreach в Parallel.Foreach. Не могу до конца понять.

Рекурсивный обход. Не могу сделать табуляцию. Обход с выводом имен файлов
Задание простое, ну по крайней мере на первый взгляд. Написать скрипт обхода вложенных директорий с...

Тип вывода <c:forEach ></c:forEach>
Здравствуйте. У меня такая проблема. При выводе в jsp с помощью jstl &lt;c:forEach &gt;&lt;/c:forEach&gt;,...

List.ForEach vs foreach производительность?
Что лучше использовать в плане производительности List.ForEach или foreach(var ... in ...)? C#...

Foreach внутри foreach
Посетители сайта видят список альбомов в мозаичном виде по 3 альбома в ряд, 12 альбомов на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru